Content Control + DataTemplate动态更改UserControl DevExpress wpf

时间:2014-11-17 11:31:03

标签: c# wpf mvvm user-controls devexpress-wpf

我想动态地将用户控件加载到内容控件,所以我使用了基于DataTemplate更改usercontrol的“Good Old Method”。

但是在设置ViewModel属性(即绑定到ContentControl内容属性)时,ContentControl正在显示“text”,其中包含相应的viewmodel名称,而不是加载相应的Usercontrol。

Window的资源

 <dxr:DXRibbonWindow.Resources>
    <DataTemplate x:Key="TYRVM"  DataType="{x:Type VM:ProductTYRViewModel}">
        <views:TYRUserControl/>
    </DataTemplate>
    <DataTemplate x:Key="THORVM" DataType="{x:Type VM:ProductTHORViewModel}">
        <views:THORUserControl/>
    </DataTemplate>
 <dxr:DXRibbonWindow.Resources>

Window`s code

  <ContentControl Name="content" Content="{Binding Path=VMs,Mode=TwoWay}"/>

现在我不知道究竟是什么问题!!

1 个答案:

答案 0 :(得分:1)

您已在Key上指定了DataTemplate,因此根据DataTemplate自动应用Type

来自MSDN:

  

此属性与Style类的TargetType属性非常相似。在不指定x:Key的情况下将此属性设置为数据类型时,DataTemplate将自动应用于该类型的数据对象。请注意,执行此操作时,将隐式设置x:Key。因此,如果为此DataTemplate指定x:Key值,则覆盖隐式x:Key,并且不会自动应用DataTemplate。

Link to MSDN : DataTemplate.DataType