Étant donné que j'ai une application shell et un couple de projets de modules séparés à l'aide de Microsoft CompoisteWPF (Prism v2) ...modèles de données de ressources du module Composite WPF (Prism)
Sur réception d'une commande, un module crée une nouvelle ViewModel et l'ajoute à une région via le gestionnaire de région.
var viewModel = _container.Resolve<IMyViewModel>();
_regionManager.Regions[RegionNames.ShellMainRegion].Add(viewModel);
Je pensais que je pourrais alors créer un dictionnaire de ressources dans le module et mettre en place un modèle de données pour afficher une vue pour le type de modèle de vue qui a été chargé (voir ci-dessous XAML). Mais lorsque le modèle de vue est ajouté à la vue, tout ce que j'obtiens est l'espace de noms des modèles de vue imprimé.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:Modules.Module1.ViewModels"
xmlns:vw="clr-namespace:Modules.Module1.Views"
>
<DataTemplate DataType="{x:Type vm:MyViewModel}">
<vw:MyView />
</DataTemplate>
</ResourceDictionary>
Edit:
Je peux l'obtenir pour travailler en ajoutant à la App.xaml
<Application.Resources>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Module1;component/Module1Resources.xaml"/>
<ResourceDictionary Source="pack://application:,,,/Module2;component/Module2Resources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</Application.Resources>
Ce qui est bien, mais cela signifie que les modules sont créés en tant que nouveaux, l'App. Le fichier xaml doit être ajouté. Ce que je cherche est un moyen pour les modules, car ils chargent pour ajouter dynamiquement à l'Application.Resources. Est-ce possible?
La première partie de votre réponse nécessite que votre module accède à l'application. Je recommanderais contre cela car il est impossible à tester. La deuxième approche est plus appropriée. –