Wpf 从PCL视图模型动态加载控制内容
我有一个MVVM项目,它在WPF中运行良好。它基本上是一个TabControl,它根据所选实体的类型动态加载其TabItems。TabItem ViewModels在运行时实例化(使用Activator.CreateInstance),以便在不影响主项目的情况下反复实现新选项卡。TabItem ViewModel类的全名对于每种实体都是可配置的 在WPF中,我采用了以下方法: 每个选项卡项ViewModel都通过从资源文件检索内容模板来公开其内容模板:Wpf 从PCL视图模型动态加载控制内容,wpf,silverlight,mvvm,portable-class-library,Wpf,Silverlight,Mvvm,Portable Class Library,我有一个MVVM项目,它在WPF中运行良好。它基本上是一个TabControl,它根据所选实体的类型动态加载其TabItems。TabItem ViewModels在运行时实例化(使用Activator.CreateInstance),以便在不影响主项目的情况下反复实现新选项卡。TabItem ViewModel类的全名对于每种实体都是可配置的 在WPF中,我采用了以下方法: 每个选项卡项ViewModel都通过从资源文件检索内容模板来公开其内容模板: public class CustomEn
public class CustomEntityPropertyTab : EntityPropertyTabViewModelBase
{
public override DataTemplate ContentTemplate
{
get
{
ResourceDictionary dic = new ResourceDictionary();
dic.Source = new Uri("/CustomProject;component/View/CustomProject.Resources.xaml", UriKind.RelativeOrAbsolute);
return dic["customEntityPropertyTab"] as DataTemplate;
}
}
}
主选项卡Control ViewModel包含EntityPropertyTabViewModelBase的可观察集合,该集合绑定到主视图,如下所示:
<TabControl Name="EntityPropertyPageTabControl"
ItemsSource="{Binding EntityPropertyTabs}"
SelectedItem="{Binding SelectedPropertyTab}"
>
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Header}"/>
<Setter Property="ContentTemplate" Value="{Binding ContentTemplate}"/>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
但是现在,我也需要在Silverlight中提供这个。。。因此,我打算在可移植类库中分离ViewModel逻辑,但它不起作用,因为PCL不支持DataTemplate属性:(
那么,实现WPF和Silverlight UI之间共享的ViewModels动态加载的最佳方法是什么
谢谢