web-dev-qa-db-fra.com

WPF-MVVM: Définition du focus de contrôle d'interface utilisateur à partir de ViewModel

Quelle est la bonne pratique pour définir le focus du contrôle dans l’architecture MVVM? 

La façon dont je l’imagine est d’utiliser une propriété sur le ViewModel qui déclencherait un changement de focus en cas de besoin. Et que les contrôles de l'interface utilisateur lient/écoutent cette propriété afin que, si elle change, le focus approprié soit défini. 

Je le vois comme une chose ViewModel, parce que je veux définir le focus approprié après une certaine action effectuée par ViewModel, telle que le chargement de certaines données. 

Quelle est la meilleure pratique? 

42
Sonic Soul

Utilisez la propriété attachée IsFocused comme suggéré dans la réponse ici: Définissez le focus sur la zone de texte dans WPF depuis le modèle d'affichage (C #)

Ensuite, vous pouvez simplement vous lier à une propriété dans votre viewmodel.

27
Snarfblatt

ViewModel envoie un événement à la vue en lui indiquant que l'action est terminée et la vue définit le focus.

1
Alex Shtof

Vous pouvez introduire une interface pour la vue afin que ViewModel puisse indiquer à la vue de définir le focus. L'exemple d'application BookLibrary du WPF Application Framework (WAF) montre comment procéder. S'il vous plaît jeter un oeil à la BookListViewModel.

0
jbe

La question a été posée à plusieurs reprises. Malheureusement, les réponses ne concernent que WPF. Donc, pour une lumière argentée utilisant MVVM, vous pouvez également associer n'importe quelle propriété pour plus de détails, veuillez visiter le lien suivant

http://codenicely.blogspot.com/2012/01/how-to-set-textbox-focus-in-silverlight.html

0
Khalid Rafique