Da ich eine Shell-Anwendung und ein paar separates Modul Projekte mit Microsoft CompoisteWPF (Prism v2) haben ...Composite-WPF (Prism) Modul Ressourcendatenvorlagen
Bei Empfang eines Befehls, schafft ein Modul eine neue ViewModel und fügt es über den Regionsmanager einer Region hinzu.
var viewModel = _container.Resolve<IMyViewModel>();
_regionManager.Regions[RegionNames.ShellMainRegion].Add(viewModel);
Ich dachte, dass ich dann ein Ressourcenverzeichnis innerhalb des Moduls erstellen könnte und eine Datenvorlage einrichten eine Ansicht für die Ansicht Modelltyp anzuzeigen, die (unter XAML sehen) geladen wurde. Wenn das Ansichtsmodell jedoch zur Ansicht hinzugefügt wird, wird nur der Namespace der Ansichtsmodelle ausgedruckt.
<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:
Ich kann es erhalten, indem die Arbeit an den App.xaml Zugabe
<Application.Resources>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Module1;component/Module1Resources.xaml"/>
<ResourceDictionary Source="pack://application:,,,/Module2;component/Module2Resources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</Application.Resources>
was in Ordnung ist, aber es bedeutet, dass neue Module erstellt werden, die App. XAML-Datei muss hinzugefügt werden. Was ich suche ist ein Weg für Module, wie sie geladen werden, um die Application.Resources dynamisch hinzuzufügen. Ist das möglich?
IMergeDictionaryRegistry
{
void AddDictionaryResource(Uri packUri);
}
Sie:
Der erste Teil Ihrer Antwort erfordert, dass Ihr Modul in die Anwendung gelangt. Ich würde das empfehlen, da es nicht überprüfbar ist. Der zweite Ansatz ist angemessener. –