Ouverture de nouvelles fenêtres dans MVVM WPF : considérations sur l'interface
Bien que la création d'une nouvelle instance de fenêtre à partir du modèle de vue viole les principes MVVM, il est courant pour implémenter des interfaces pour éliminer la complexité de l'ouverture des fenêtres. Cependant, coupler étroitement l'interface à un type de fenêtre spécifique, tel que ChildWindow, limite la flexibilité.
Solution d'interface générique
Pour résoudre ce problème, envisagez une interface plus générique design :
interface IWindowService { void OpenWindow<TWindow>(object dataContext) where TWindow : Window, new(); }
Cette interface vous permet de spécifier le type de fenêtre en tant que paramètre générique, permettant au service de gérer n'importe quel type de fenêtre que vous passer.
Implémentation de WindowService
L'implémentation de WindowService peut alors devenir :
class WindowService : IWindowService { public void OpenWindow<TWindow>(object dataContext) where TWindow : Window, new() { var window = new TWindow(); window.DataContext = dataContext; window.Show(); } }
Afficher l'utilisation du modèle
Dans votre modèle de vue, vous pouvez utiliser le service pour ouvrir de nouvelles fenêtres comme nécessaire :
public void OpenChildWindowCommandExecute() { _windowService.OpenWindow<ChildWindow>(this); }
Conclusion
Cette approche d'interface générique vous permet de créer et d'ouvrir de nouvelles fenêtres à partir du modèle de vue sans violer les principes MVVM. Il offre de la flexibilité en permettant l'utilisation de n'importe quel type de fenêtre, favorisant la réutilisation et la maintenabilité du code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!