我有以下内容控制:
<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获得映射?
发布于 2017-01-07 13:00:17
如何使主项目的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()
}然后,应按预期的方式应用模板。
https://stackoverflow.com/questions/41506337
复制相似问题