Alors comment afficher complexes ViewModels agrégés dont les modèles ont des relations les uns avec les autres?MVVM - plusieurs espaces de travail dans un espace de travail ne semble pas avoir de sens
NO disciple de WPF n'a jamais parlé à ce sujet, devinez pourquoi il est pas possible ...
Pensez-vous que des thats vrai?
Ne me comprenez pas?
Rechercher: Un CustomerViewModel a beaucoup OrderViewModel et ceux de nombreux ProductViewModel.
Vous avez 3 Workspaces pour entrer les nouvelles données pour tous 3 ViewModels ET vous avez 3 listboxes/combobo/DataGrid à MultiSelect Collections de type => customerVM s, orderVM
s et productVM`s. Que l'interface utilisateur ait un sens pour l'utilisateur, il ne devrait pas avoir besoin d'éteindre/sur l'espace de travail chaque nouveau client/commande/produit est ajouté ce qui est une mauvaise expérience utilisateur, comment faites-vous cette exigence typique d'application métier?
EDIT:
Vous avez dans MVVM une collection de type WorkSpace. Chaque ViewModel peut être un Workspace car il dérive de la classe WorkSpace. La collection Workspaces est liée à un exemple ItemsSource afair josh smith.
Déclaration: Je veux utiliser les fenêtres goold matures forme des interfaces utilisateur aucun ViewModels refermables ... Problème: MVVM ne peut fonctionner avec des espaces de travail (la matière refermable ne marche pas ...) parce qu'un CustomerviewModel doit déjà être instancié puis ajouté à la collection workspaces liée à itemsControl et datatemplated en fonction du type de données.
Si je n'avais pas d'espaces de travail qui contiennent mes instances ViewModel, je ne pouvais pas les datatemplate car un ViewModel dans MVVM prend un modèle comme paramètre constructeur. DataTemplating un contrôle UserControl avec DataType du CustomerViewModel lèvera une exception dans XAML!
Maintenant, regardez mon interface utilisateur que je veux avoir: Je n'ai pas d'espaces de travail, mais 3 ViewModels = 3 UserControls moyens datatemplated 3 fois un big bang ...
Vous obtenez maintenant pourquoi je n'aime pas MVVM? Ce n'est pas bien pensé et je cherche une solution ...
Bien sûr, je pourrais mettre mes ViewModels alias DataFormulars dans un ObservableCollection mais je ne veux pas qu'ils soient liés à un ItemsControl. Je veux que ces 3 UserControl aient une certaine position dans ma mise en page. Avec ItemsControl vous avez une file d'attente stupide où un nouveau Dataformular est juste ajouté et emballé s'il ne rentre pas dans l'espace existant. C'est tout le design de disposition des déchets/mauvaise interface utilisateur.
Vous me ramenez vous maintenant?
Bien sûr, une fenêtre peut avoir plusieurs commandes avec datatype du viewmodel. Ce n'est pas de ça que je parle. Mon maître-détail avec produit/client/ordre - -ViewModelcollection fonctionne très bien sans la solution de contournement en utilisant un système de messagerie. Utilisez simplement IsSynchronizedTocurrentItem sur vos collections de machines virtuelles et reliez-les à tous les commutateurs. plus sur la modification voir ci-dessus. – msfanboy
vous savez quoi, je suppose que j'avais en partie tort. Aujourd'hui j'ai vérifié Chinch qui est le cadre mvvm de Sacha Barber et il a soudainement ouvert mes yeux. Il n'utilise pas de constructeur dans son CustomerViewModel. Je sais pourquoi ;-) Il charge les commandes et les produits liés LAZILY. Je le fais EAGERLY lié à ma liste déroulante avec lié à AllCustomersViewModel. Le problème est dans le chargement paresseux/impatient des données connexes. Votre droit Dan si j'utilise le chargement différé Je renvoie le CustomerViewModel sélectionné à un autre endroit via Messenger pour afficher les OrderViewModels liés dans un DataGrid par exemple. – msfanboy
Je vois le premier paragraphe que vous avez écrit comme une solution parce que vous avez conseillé ce que j'ai vu dans Chinch et il semble que je change ma stratégie de chargement afin que je puisse kicker le constructeur ViewMOdels, hurrraaayy XD – msfanboy