Ich habe Raster mit mehreren Textboxen. Je nachdem, welche Aktionen der Benutzer ausführen soll, sollte der Fokus auf einen der Textfelder geändert werden. Meine aktuelle Lösung verwendet eine String-Eigenschaft im ViewModel und einen Datentrigger in XAML, um den Fokus zu ändern. Es funktioniert gut, aber es scheint ein eher umständlicher Weg, um dies zu erreichen, also habe ich mich gefragt, ob es klarer getan werden könnte?Fokus in WPF mit MVVM setzen
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding FocusedItem}" Value="number">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=number}"/>
</DataTrigger>
<DataTrigger Binding="{Binding FocusedItem}" Value="name">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=name}"/>
</DataTrigger>
<DataTrigger Binding="{Binding FocusedItem}" Value="id">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=id}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
Wenn Sie den Wert der Immobilie und den Namen des Elements sehen können, ist das gleiche, so würde Ich mag diese i einen einzigen Auslöser tun, anstatt pro Element einen Auslöser aufweist.
Vielleicht kann jemand mit einem saubereren Weg kommen?
Vielen Dank im Voraus
Könnte ich Sie fragen, warum Sie den Fokus auf diese Weise setzen? Da der Benutzer auch Tab by TabIndex verwenden kann, müssen Sie nur einmal den Fokus setzen – WiiMaxx
solange diese Lösung für Sie funktioniert, sollten Sie es nehmen – blindmeis
Persönlich denke ich, Focus ist ein UI-spezifisches Konzept, so würde ich sagen All meine Fokusbehandlung im Code hinter der View und nicht in meinem ViewModel (es sei denn, der Fokus hatte eine bestimmte Bedeutung in der Geschäftslogik). – Rachel