停止在嵌套的contentpresenters中继承datatemplate

时间:2016-04-02 11:25:27

标签: c# wpf contentpresenter

我在我的应用程序中使用一系列viewmodel类来表示数据。我定义了2个或更多“ViewPresenter”控件(基于ContentPresenter)来显示这些视图模型,例如“minimal”,“summary”或“detail”模式。每个演示者类都使用resourcedictionary来定义它需要能够显示的所有视图模型的datatemplate。

现在出现问题:当这些视图展示器的不同类型彼此包含在一起时,它们会从容器中继承datatemplate,这会导致一些问题。我怎样才能阻止继承的发生呢?

编辑:插图示例

// first ContentPresenter
<ViewPresenter DataContext="{Binding DerivedObj}">
  <ViewPresenter.Resources>
    <DataTemplate TargetType="{x:Type DerivedClass}">
      <DerivedClassView>

        // Nested ContentPresenter
        <ViewPresenter DataContext="{BaseObj}">
           <ViewPresenter.Resources>
             <DataTemplate TargetType="{x:Type BaseClass}"/>
           </ViewPresenter.Resources>
        </ViewPresenter>

      </DerivedClassView>
    <DataTemplate/>
  </ViewPresenter.Resources>
</ViewPresenter>

因此,此处出现的问题是嵌套模板的特定性不如更高级别的contentpresenter中的模板,因此它永远不会显示。嵌套的contentpresenter需要以明确的resourcedictionary开头,并且不要使用更高的contentpresenter的datatemplates。

0 个答案:

没有答案