Hallo, ich habe folgendes Problem mit Visual Studio 2013 und WPF in C#. Ich habe mehrere Objekte (z.B. TextBox, Label etc.) in einem WPF Window hinzugefügt und diesen entsprechende Ereignisse zugewiesen. Zum Beispiel soll wenn in Textbox A ein Eintrag stattfindet das Label B umbenannt werden. Mein Problem ist jetzt, dass sobald ich die Anwendung im Debug Modus starte, ich eine Fehlermeldung erhalte, weill Label B noch NULL ist! D.h. das Ereignis wird ausgelöst noch bevor alle Objekte in der WPF erzeugt wurden! Wie kann das sein? Was mache ich falsch? Gibt es eine Möglichkeit global alle Events zu deaktivieren/aktivieren?
Schau mal in die InitializeComponent()-Methode. Dort wird die Textbox initialisiert, bevor das Label instanziiert wird. Tausch die Blöcke aus oder mach die Zuweisung mit dem Text erst später.
Wie und wo hast du denn die Event-Handler zugewiesen? Wenn im WPF-Editor (also Objekt markieren, Eigenschaften, Ereignishandler) kann es den Fehler nicht geben. Wenn du "von Hand" initialisierst, mache das bitte mal im Loaded-Event des Hauptfensters.
Hallo, ich habe nicht von Hand initialisiert, sondern über den Propertie Editor im Window Editor generiert. Ich verwende das Event TextChanged. Wenn ich das Event TextInput verwende startet das Programm, wirft aber kein Event wenn ich Text in die Textbox eingebe. Mittlerweile habe ich die Events bis auf das eine TextChanged Event der einen TextBox reduziert. Komischerweise bekomme ich jetzt die Fehlermeldung: "A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll Additional information: 'The invocation of the constructor on type 'Generator.MainWindow' that matches the specified binding constraints threw an exception.' Line number '4' and line position '70'."
ScharpingSharp schrieb: > ich habe nicht von Hand initialisiert, sondern über den Propertie Editor > im Window Editor generiert. > Ich verwende das Event TextChanged. Wenn ich das Event TextInput > verwende startet das Programm, wirft aber kein Event wenn ich Text in > die Textbox eingebe. Das ist merkwürdig. Wenn ich auf "TextChanged" unter Events doppelklicke, wird die "TextBox_TextChanged hinzugefügt und bei Eingaben in der Textbox auch aufgerufen: private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { MessageBox.Show("pling"); } > Line number '4' and line position '70'." Was steht an dieser Stelle? Wie sieht der Konstruktor aus (ist dort etwas, das eine Exception wirft)? Du kannst ja evtl. debuggen und dir nicht nur die Fehlermeldungen anschauen.
Vergiss die ganzen Events und mach das ganze im Viewmodel und du hast ne saubere Lösung (auch für Erweiterungen). Also kurz gesagt: Label bzw. TextBox Text an ein Property binden und im Setter das entsprechende Property vom Label ändern.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.