Textbox.TextChanged auslösen, wenn die Seite geladen wird. Wie kann ich es verhindern?
Ich habe ein Problem mit textbox.textchanged-Ereignis. meine Textfelder sind Daten-gebunden, und wenn die Seite geladen wird, textchanged-Ereignis-Trigger haben. Wie kann ich verhindern, dass es passiert, und nur auslösen, wenn der Benutzer macht jede Art von änderungen?
- Darf ich Fragen, warum diese erste Veranstaltung nennen, ist ein problem, um mit zu beginnen? Vielleicht lösen wir das problem hinter dem problem
- Hallo empfing. Ich habe eine navigation, die Seite mit speichern und Abbrechen-button. die Seite mit laden mit ein paar Textfelder, die zunächst ausgefüllt mit ein paar default-Werte. Ich muss einschränken, die Fähigkeit für den Benutzer zu navigieren aus der Seite, bevor Sie entweder "speichern" und "Abbrechen" - Taste.
- ich könnte simulieren Sie die Abbrechen-Taste, drücken Sie mit so etwas wie dies:
someButton.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
aber es hat nicht funktioniert. Ich habe diese nach dem InitializeComponent(). Mache ich es falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Innen textchanged-event-Handler können Sie überprüfen, ob die Fenster (oder usercontrol, oder was auch immer) wird geladen:
Diese Weise können Sie überspringen die ersten Zündung des TextChanged-Ereignis, wenn das Fenster noch nicht geladen ist.
<bag:InfoTextBox Name="EmailAddress" TextBoxInfo="Enter an E-Mail address" VerticalAlignment="Center" Style="{StaticResource BorderedTextBox}" Width="300" Text="{Binding Path=Email, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
Das problem ist, dass wenn der text gesetzt ist, TextChanged-Trigger. Das ist nur die Art, wie WPF arbeitet. Kann man "beheben", indem man events im codebehind, abonnieren Sie den Loaded-Ereignis des Fensters/Usercontrol. Das Loaded-Ereignis wird ausgelöst, nachdem jedes Kind, und Ihre Kinder, haben fertig geladen ist und bereit ist, angezeigt werden.
Nun, aus deinem Kommentar entnehme ich, dass Sie möchten, dass der Benutzer änderungen, die nur propagiert, um die zugrunde liegenden Daten, wenn er explizit speichert, oder das Formular schließt.
Könnten Sie die UpdateSourceTrigger "Explicit" hier.
Damit Ihre änderungen werden nur dann weitergegeben, indem Sie explizit aufrufen UpdateSource auf Ihre Bindungen, wenn Ihre Benutzer zuvor auf die Schaltfläche speichern.
Wenn du MVVM-Sie können auch der Umsetzung der gleichen Logik codewise in den ViewModels.
Ich hatte das gleiche problem und endete mit einem umgehen.
Auf dem Fenster ich habe eine variable für Fenster geladen ist und ich diese am Ende des Window_Loaded-Ereignisses auf true.
Auf die TextChanged-Ereignisse überprüfen, wenn die variable wahr ist.