我在我的应用程序中使用一系列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。