代码之家  ›  专栏  ›  技术社区  ›  huseyint

仅针对特定视图的目标数据模板

  •  1
  • huseyint  · 技术社区  · 16 年前

    我在这样的全局/共享资源字典中有一个以数据类型为目标的数据模板:

    <DataTemplate DataType="{x:Type foo:Bar}">
        <!-- My DataTemplate visual tree goes here... -->
    </DataTemplate>
    

    此数据模板将替换所有视图(usercontrols/windows)上的所有foo:bar类型。我要做的是将此模板仅应用于某些视图,保持其他视图不受此数据模板的影响。我可以将此数据模板复制到每个视图的资源部分,但我不想复制/粘贴数据模板的内容,这将导致维护难题。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Anvaka    16 年前

    你在这里使用的是 implicit data template . 你在要求一个明确的。要实现这一点,您可以使用显式资源键:

    <DataTemplate x:Key="MyStyle" DataType="{x:Type foo:Bar}">
        <!-- My DataTemplate visual tree goes here... -->
    </DataTemplate>
    

    稍后在XAML中:

    <ContentPresenter ContentTemplate="{StaticResource MyStyle}" .../>
    

    另一种解决方案是通过 Merged Dictiories 在适当的控件/页面内。

    我更喜欢第一种方法,因为它更容易维护(隐式样式更难跟踪)。

    推荐文章