Après avoir essayé un certain nombre de solutions différentes, je reviens toujours à cela. J'ai besoin d'un Window.ShowDialog, en utilisant la classe ViewModelLocator comme une usine via un UnityContainer. Fondamentalement, j'ai une vue (et ViewModel) qui sur un bouton sur la vue doit créer une boîte de dialogue (en prenant quelques paramètres dans son constructeur) qui va traiter une logique et éventuellement retourner un résultat à l'appelant (avec les résultats de toute la logique qu'il a calculée). Peut-être que je me trompe pour regarder encore cela d'un point de vue Windows Forms, mais je sais exactement ce que je veux faire et je veux idéalement le faire en utilisant WPF et MVVM. J'essaye de faire fonctionner ceci pour un projet, et finalement je ne veux pas devoir retourner à WPF vanille afin de le faire fonctionner.Dialogues (vrais)
Répondre
Vous pouvez le faire. Créez simplement une instance d'une page/usercontrol/window et appelez le instance.ShowDialog()
.
Here's my T4 templates pour générer un view/viewmodel avec la messagerie pour fermer une fenêtre et d'autres astuces.
Je casse les règles pour implémenter une boîte de dialogue mais essaye de la réduire au minimum. J'ai une méthode OpenDialog dans mon BaseViewModel:
public void OpenDialog(DialogViewModel model)
{
this.MessengerInstance.Send<DialogViewModel, MainWindow>(model);
}
Et dans mon MainWindow:
Messenger.Default.Register<DialogViewModel>(this, model =>
{
// Instantiate the dialog box
var dlg = new DialogWindow();
// Configure the dialog box
dlg.Owner = this;
dlg.Content = model;
// Open the dialog box modally
dlg.ShowDialog();
});
De cette façon, j'ai seulement un couplage lâche entre mon viewmodel et mon MainView. Vous pouvez faire la même chose pour la fermeture, mon BaseDialogViewModel a une méthode:
public void CloseDialog()
{
this.MessengerInstance.Send<PopUpAction, DialogWindow>(PopUpAction.Close);
}
(PopupAction est juste un ENUM) et mon registres DialogWindow pour que:
Messenger.Default.Register<PopUpAction>(this, action =>
{
switch (action)
{
case PopUpAction.Close:
this.Close();
break;
}
});
Vous pouvez également laisser le récepteur loin lors de l'envoi, pour garder la classe vue hors du viewmodel mais de toute façon je pense que c'est une solution acceptable :)
- 1. WiX Standard Dialogues
- 2. Dialogues dynamiques InstallShield
- 3. Multiples dialogues simplemodal
- 4. WebServices SYNCRHONES ET Dialogues modaux!
- 5. JQuery Simple Modal OSX dialogues multiples
- 6. comment afficher deux dialogues en même temps?
- 7. Comment font-ils? Dialogues sur l'écran d'accueil
- 8. C++ Sauvegarde WinAPI et dialogues ouverts
- 9. jquery ui - rendre les dialogues plus "dynamiques"?
- 10. Un processus algorithmique peut-il donner de vrais nombres aléatoires?
- 11. Caractères Unicode de JSON.stringify à de vrais caractères Unicode
- 12. Les mots clés sont-ils vrais et faux?
- 13. mod_rewrite: pas d'accès aux vrais fichiers et répertoires
- 14. Émulateurs de vrais appareils sur le site Nokia
- 15. Qui utilise IntelliJ pour de vrais projets commerciaux?
- 16. Meilleure technique pour les fenêtres/dialogues DHTML dans Prototype?
- 17. Struts Jquery Plugin: Dialogues distants avec les paramètres
- 18. Dialogues Android: confirmation de la suppression d'une ligne de table
- 19. Qt QFileDialog - dialogues natifs uniquement avec des fonctions statiques?
- 20. Modification des dialogues au niveau du système: TimePicker, DatePicker
- 21. Comment désactiver les dialogues d'exception "Microsoft Visual C++ Debug Library"?
- 22. InstallShield 2010 Projet MSI InstallScript - Gestion des dialogues
- 23. Excel, Word, PDFs et les dialogues d'impression PowerPoint
- 24. Comment fournir une entrée aux dialogues conçus par Qt Designer
- 25. recherche de chemin/composants pour lire/éditer les vrais fichiers MS Excel 2007
- 26. Dans mercurial, comment puis-je avoir un aperçu du nombre de fichiers avec de vrais conflits?
- 27. Y a-t-il de vrais problèmes dans Silverlight 3 beta?
- 28. Quel est le plus proche des isolats vrais (limités en ressources) dans la JVM aujourd'hui?
- 29. Quels sont les vrais problèmes d'utilisation de tables au lieu de divs pour l'utilisateur final?
- 30. Comment obtenir les vrais personnages de son format utf brut en Java