TextBox-Fokus aus ViewModel in WPF festlegen
Frage:
In einer WPF-Anwendung besteht das Ziel darin, den Fokus wieder auf eine bestimmte TextBox zu setzen, nachdem dem Benutzer eine Fehlermeldung angezeigt wurde, wenn eine Bedingung fehlschlägt. Die aktuelle Methode mit System.Windows.Input.Keyboard.Focus funktioniert jedoch nicht.
Frage:
Wie lege ich den Fokus von TextBox aus ViewModel in WPF fest?
Antwort:
Teil Eins: Überlegungen zur Barrierefreiheit
Es ist wichtig zu beachten, dass der direkte Verweis auf UI-Elemente (z. B. cs.txtCompanyID) im ViewModel gegen das MVVM-Muster verstößt und zu Barrierefreiheitsproblemen führen kann. Verlassen Sie sich stattdessen auf den Datenbindungsmechanismus, um mit der Benutzeroberfläche zu kommunizieren.
Teil 2: Debuggen des .NET-Quellcodes
Um Fokusprobleme effektiv zu beheben, sollten Sie das Debuggen von .NET-Quellcode in Betracht ziehen. Weitere Informationen zum Aktivieren des .NET-Quellcode-Debuggens finden Sie im Blog von Shawn Bruke.
Teil 3: Zusätzliche Attribute verwenden
Eine effiziente Möglichkeit, den Fokus von einem ViewModel aus festzulegen, ist die Verwendung angehängter Eigenschaften. Erstellen Sie eine angehängte Eigenschaft namens IsFocused und verwenden Sie die folgende Implementierung:
<code class="language-csharp">public static class FocusExtension { public static bool GetIsFocused(DependencyObject obj) {...} public static void SetIsFocused(DependencyObject obj, bool value) {...} public static readonly DependencyProperty IsFocusedProperty = DependencyProperty.RegisterAttached(...); private static void OnIsFocusedPropertyChanged(...) {...} }</code>
Binden Sie in Ihrer XAML-Ansicht die angehängte Eigenschaft „IsFocused“ an die Eigenschaft im ViewModel, die den Fokus auslöst:
<code class="language-xml"><TextBox local:FocusExtension.IsFocused="{Binding IsUserNameFocused}" /></code>
Wenn diese Eigenschaft im ViewModel aktualisiert wird, erhält das UI-Element automatisch den Fokus.
Diese überarbeitete Antwort behält das Bild bei und verwendet eine prägnantere und natürlichere Sprache, während die ursprüngliche Bedeutung ebenfalls erhalten bleibt.
Das obige ist der detaillierte Inhalt vonWie kann ich mich auf ein WPF -Textfeld aus dem ViewModel konzentrieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!