en utilisant MVVMLight Toolkit pour WPF et C#. Il existe une application WPF avec une fenêtre (Shell) et un assemblage dans lequel les contrôles sont (UI). Les ViewModels sont dans la troisième DLL (BIZ). La seule chose qui est affichée dans la fenêtre est un contrôle appelé "ShellView" qui est la partie principale de l'interface utilisateur. Je fais cela pour être en mesure de réutiliser la plupart de l'application dans différentes fenêtres.MVTMLight DataTemplates dans le dictionnaire des ressources d'assemblage
Actuellement, j'effectue toutes les liaisons entre view et viewmodel dans le fichier App.config "Shell".
référencé Ive:
L'Assemblée namespaces
xmlns:views="clr-namespace:Application.UI;assembly=Application.UI"
xmlns:vm="clr-namespace:Application.BIZ;assembly=Application.BIZ"
ViewModel Locator
<vm:ViewModelLocator xmlns:vm="clr-namespace:Application.BIZ;assembly=Application.BIZ" x:Key="Locator" d:IsDataSource="True" />
Et utilisé les DataTemplates
<DataTemplate
DataType="{x:Type vm:ShellVM}">
<views:ShellView />
Donc, si im bindig le contenu d'un contrôle de contenu à une classe de "ViewModelBase" la vue s'affiche automatiquement - tout fonctionne bien. Maintenant, je suis en train d'essayer de déplacer la définition des modèles de données dans l'assemblage de l'interface utilisateur et de le référencer dans l'application fenêtre. Ainsi, tous les modèles et les liaisons sont effectués dans l'ensemble de l'interface utilisateur et la fenêtre fait simplement référence à tous les assemblages et affiche le "ShellView". Est-ce possible et comment est-ce que je dois référencer les assemblées dans App.xaml? Actuellement je reçois beaucoup d'exceptions xaml parse.
Nous vous remercions à l'avance
Les modèles de données ne sont pas utilisés dans la fenêtre principale de l'application xaml. Seulement dans la bibliothèque de contrôle, votre solution fonctionnerait-elle aussi? Je les utilise généralement uniquement pour la liaison View-ViewModel: les modèles de données font le reste –
pwoestmann
@pwoestmann L'app.xaml que vous pouvez avoir dans n'importe quel projet. Cependant, pendant l'exécution, seul celui du projet exe est utilisé. Donc, si vous voulez rester avec cette solution, vous devrez dupliquer cette section de ressources. Donc, dans le projet où vous voulez consommer vos datatemplates, donc le concepteur ne se plaint pas, et un dans le projet principal quand il s'exécute il sait où les trouver. – adminSoftDK