Mam widok, który ma jeden TextBox
i kilka Button
s poniżej. Po załadowaniu okna chcę ustawić ostrość na TextBox
.WPF Pole widzenia MVVM na obciążenie
Jeśli nie korzystałem z MVVM, zadzwoniłbym pod numer TextBox.Focus()
w zdarzeniu Załadowano. Jednak mój ViewModel nie wie o moim widoku, więc jak mogę to zrobić bez umieszczania kodu w kodzie behind mojego widoku?
EDIT: Po przeczytaniu odpowiedzi postanowiłem umieścić ten kod w widoku XAML
<DockPanel FocusManager.FocusedElement="{Binding ElementName=MessageTextBox}">
<TextBox Name="MessageTextBox" Text="{Binding Message}"/>
</DockPanel>
Gdyby to było coś innego niż strona początkowa Focus I prawdopodobnie polecić odpowiedź Jon Galloway jest, ponieważ może być sterowany ViewModel.
Tego właśnie szukałem. Myślę, że ten kod należy do widoku iz jakiegoś powodu podoba mi się go lepiej w xaml niż w kodzie. –
Sugestia Galloway pozwala kontrolować ostrość z ViewModel ... możesz również przyjrzeć się temu bliżej. –
Po przeczytaniu niektórych innych odpowiedzi nie jestem pewien, czy kod należy do ViewModel. Wydaje się być związany bezpośrednio z widokiem. Gdybym miał bardziej złożoną stronę, która faktycznie poruszałaby fokus na podstawie innych zdarzeń, które prawdopodobnie miałyby sens. To powiedziało, że nadal jest to fajna sztuczka. –