我有以下内容控制:
<ContentControl Content="{Binding Content}">
<ContentControl.Resources>
<DataTemplate DataType="{x:Type viewModels1:A}">
<views1:A />
</DataTemplate>
<DataTemplate DataType="{x:Type viewModels2:B}">
<views2:B />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
现在,我想将viewModels1:A
和views1:A
移到单独的项目P1中,将viewModels2:B
和views2:B
移到另一个项目P2中。 P1可能包含带有
<DataTemplate DataType="{x:Type viewModels1:A}">
<views1:A />
</DataTemplate>
和P2一个类似的字典
<DataTemplate DataType="{x:Type viewModels2:B}">
<views2:B />
</DataTemplate>
如何让主项目的ContentControl知道视图模型和视图之间的这些映射?是否有可能不在主项目中明确说明类型viewModels:A
,views1:A
,viewModels2:B
和views2:B
,而只是从P1和P2获取映射?
答案 0 :(得分:0)
如何让主项目的ContentControl知道视图模型和视图之间的这些映射?
将定义了DataTemplates的外部程序集中的资源字典合并到应用程序中,例如在App.xaml.cs的OnStartup方法中,或者在ContentControl所在的窗口或UserControl中,具体取决于您在哪个范围内想要应用模板:
public MainWindow()
{
InitializeComponent();
Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri("pack://application:,,,/WpfControlLibrary1;component/ResourceDictionaryWithDataTemplate.xaml")});
theContentControl.Content = new WpfControlLibrary1.A()
}
然后应按预期应用模板。