Mam siatkę z wieloma polami tekstowymi. W zależności od działań, które użytkownik może podjąć, należy zmienić na jeden z pól tekstowych. Moje bieżące rozwiązanie wykorzystuje właściwość string w ViewModel i wyzwalacz danych w Xaml, aby zmienić ostrość. Działa to ładnie, ale wydaje się raczej okrężną drogą do osiągnięcia tego celu, więc zastanawiałem się, czy można to zrobić w bardziej przejrzysty sposób?Ustawianie ostrości w WPF z MVVM
<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>
Jak widać wartość nieruchomości, jak i nazwę elementu jest taka sama, więc chciałbym to zrobić í pojedynczy spust zamiast jednego elementu za spust.
Może ktoś może wymyślić czystszy sposób?
góry dzięki
Czy mogę zapytać, dlaczego ustawiasz ostrość w ten sposób? ponieważ użytkownik mógłby również ustawić Tab według 'TabIndex', więc wystarczy ustawić fokus tylko raz – WiiMaxx
, o ile to rozwiązanie działa dla ciebie, powinieneś je wziąć – blindmeis
Osobiście uważam, że Focus to koncepcja specyficzna dla interfejsu użytkownika, więc chciałbym umieścić cała moja obsługa skupienia w kodzie za widokiem, a nie w moim ViewModelu (chyba że fokus miał jakieś określone znaczenie w logice biznesowej). – Rachel