Ändern Sich Dynamisch FocusManager.FocusedElement
Habe ich WPF-xaml-code wie unten:
<StackPanel FocusManager.FocusedElement="{Binding FocusedElement}">
<TextBox Name="txtbox1" Text="FirstText"/>
<TextBox Name="txtbox3" Text="SecondText"/>
<TextBox Name="txtbox2" Text="ThirdText"/>
</StackPanel>
Wie kann ich Binden FocusedElement Eigenschaft im ViewModel?
einen ähnlichen code wie unten:
Switch(Type)
{
Case "FirstType" :
FocusedElement = "txtbox1";
break;
Case "SecondType" :
FocusedElement = "txtbox2";
break;
Case "ThiredType" :
FocusedElement = "txtbox3";
break;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Viewmodel sollte nie wissen, über die Sicht, und ganz sicher nicht wissen, einige UIElement Namen. Aber da das viewmodel wirklich braucht, um in der Lage sein, zu verwalten, zu konzentrieren (ich schlage vor, Sie stellen Sie sicher, dass wirklich der Fall ist, bevor Sie fortfahren), könnte man etwas wie das hier tun:
ViewModel:
Xaml:
Den FocusedElement ist das element, das hat logischer Schwerpunkt, der für eine bestimmte Fokus-Bereich.
Den logischen Fokus und nicht das "real focus" wie txtBox1.Focus();
Logischen Fokus eingestellt werden können mehrere Male während nur ein element haben kann, den Tastatur-Fokus.
Brauchen Sie wirklich die logische konzentrieren?
Können Sie hören, GotFocus-Ereignis und führen Sie dann einige benutzerdefinierte Logik als Beispiel.