Wpf 从PCL视图模型动态加载控制内容

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

我有一个MVVM项目,它在WPF中运行良好。它基本上是一个TabControl,它根据所选实体的类型动态加载其TabItems。TabItem ViewModels在运行时实例化(使用Activator.CreateInstance),以便在不影响主项目的情况下反复实现新选项卡。TabItem ViewModel类的全名对于每种实体都是可配置的

在WPF中,我采用了以下方法:

每个选项卡项ViewModel都通过从资源文件检索内容模板来公开其内容模板:

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动态加载的最佳方法是什么

谢谢