Ich habe aktuell das Problem, dass ich in WPF keine klassische Main-Methode habe.
Vielmehr wird die MainMethode vom System laufend neu zurück gesetzt und lässt sich auf normalem Weg nicht manipulieren.
Das zwingt mich dazu, Objekte (Instanzen einer Klasse) in den C#-Codes der Fenster und Frames des WPF anzulegen. Allerdings nimmt er mir die Objekte und auch einfache Variablen nicht mit zu den anderen Fenstern und Frames, da diese jeweils eigene C#-Codes haben. Lediglich mit dem Konstruktor kann ich diese übergeben.
Bisher habe ich folgende "Umgehungen" überlegt.
Mein Traum ist jedoch, dass ich in WPF über mehrere Frames hinweg die gleichen Objekte benutzen kann. So wie in einem "normalen" C#-Code.
Erzeugung des Objekts HausBaden:
namespace Laufhaus_Imperium
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Häuser HausBaden = new Häuser();
HausBaden.Name = "Schneckenhaus";
}
private void HalloWeiterButton_Click(object sender, RoutedEventArgs e)
{
MainFrame.Content = new Startseite(); //
}
}
}
In all den folgenden Frames existieren die Objekte nicht mehr. Sodass ich es aktuell mit der 2. Version versuche. Aber es scheint mir so verrückt zu sein, die objektorientierung umgehen zu müssen, um WPF mit mehreren Frames zu nutzen. Das kann nicht im Sinn der Sache sein. (ich schreibe das Spiel ja um zu lernen. Auf eine grafische Oberfläche mag ich jedoch nicht verzichten..)
Leider habe ich keine Ahnung wie die vorgeschlagene Variante mit dem Konstrukor aussehen könnte. Dafür bin ich wohl noch nicht weit genug. You-Tube-Videos zur Übergabe von Werten in WPF finde ich auch nur für einfache Variablen.
Hallo liebe Alle,
Die Monate vergingen und ich habe ein leider sehr essentielles Problem nicht lösen können.
Wenn ich in WPF ein Objekt erzeuge (Beipiel: das Objekt "Marco" der Klasse "Held"), so bleibt es plump gesagt in dem Frame, in dem ich es erzeuge. Das nächste Frame, das ich in eine Form lade weiss nichts von dem Objekt. Natürlich kann ich Werte mit dem Konstruktor übergeben, doch eben keine Objekte. und bei über 150 Variablen (wenn ich Klassen und Objekte umgehe) ist das echt mühsam und komplex.
Ich bat einen C++ Programmierer um Hilfe. Allerdings stieß er recht überrascht auf das gleiche Problem.
Ich bitte Euch abermals um Rat, wie ich nicht nur Variablen, sondern ganze Objekte von einem Frame zu dem nächsten übergeben kann.
In den Büchern "Einstieg in C# für mit Visual Studio 2019" und "Windows Presenter Foundation", sowie der Videoreihe C# Masterkurs aus programmieren-starten.de. Fand ich keine Behandlung meines Problems.
Zur Zeit arbeite ich wieder in Umgehung der Objektorientierung nur mit vielen Variablen ohne Klassen und Objekte dafür anzulegen.
Ich wäre Euch WIRKLICH dankbar, wenn ihr mir da einen Hinweis auf mein fehlerhaftes Verständnis geben würdet. Wo denke ich so falsch, dass in keinem Buch oder so auch nur Jemand an so ein Problem denken braucht?
Ich glaube es dank deiner Hilfe gelöst zu haben! 😃
{
public partial class Window1 : Window
{
Helden Marco = new Helden();
Helden Tobias = new Helden();
public Window1()
{
InitializeComponent();
Marco.alter=40;
Marco.name="Marco";
Tobias.alter=38;
Tobias.name="Tobias";
}
void button1_Click(object sender, RoutedEventArgs e)
{
string Ergebnis = ""+Marco.alter;
TextBox1.Text = Ergebnis;
}
}
}
Es scheint als läge die Lösung darin die Objekte in der äußersten geschweiften Klammer zu erzeugen.
Die Eigenschaften dürfen dann aber erst später behandelt werden. Sonst kommts wie bei mir so oft zu Fehlermeldungen.
Allerdings dachte ich schon öfter ich hätte es gelöst. 😄
Ist das ein passender Weg? Oder bringt dieses Vorgehen später andere Probleme?
Hallo liebe Programmierer!
Ich habe ein Problem für das ich seit Wochen in meiner Freizeit eine Lösung suche. Bitte lacht Euch nicht kaputt, wenn ihr mein Problem seht. Aber ich kapiers einfach nicht..
Ich möchte nachdem ich eine Klasse angelegt habe, Objekte davon anlegen. Soweit klappt das auch alles. Aber wenn ich die Methoden des Objekts oder seine Eigenschaften ansprechen möchte, bekomme ich nur eine Fehlermeldung.
Ich schreibe in C# mit WPF, aber ich denke nicht, dass es ein WPF-Problem ist.
namespace Objekte_und_Methoden_Test
{
class Helden
{
public string name { get; set; }
public int alter;
public int stärke;
public int lebensenergie;
public void Kampf(int schaden)
{
lebensenergie = stärke - schaden;
}
public void Heilung()
{
lebensenergie++;
}
}
}
Mein eigentlicher Programmcode:
namespace Objekte_und_Methoden_Test
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Helden Marco = new Helden();
{
Marco.alter = 20;
Marco.name = "Marco";
Marco.lebensenergie = 20;
Marco.stärke = 10;
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Marco.alter++; //<--- FEHLER
}
}
}
Mein Problem ist, dass er "Marco.alter" nicht erkennt. Er sagt dann immer > Fehlermeldung:
"CS0103 Marco ist im aktuellen Kontext nicht vorhanden."