仅针对某些视图定位 DataTemplate

发布于 2024-09-05 13:45:57 字数 411 浏览 6 评论 0原文

我在全局/共享 ResourceDictionary 中有一个 DataTemplate,如下所示,它针对 DataType:

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

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

I have a DataTemplate inside a global/shared ResourceDictionary like this which targets a DataType:

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

This DataTemplate replaces my all foo:Bar types on all my Views (UserControls/Windows). What I want to do is to apply this template to only certain views, keeping the other views are not affected by this DataTemplate. I can copy this DataTemplate to Resources sections of each of these view, but I don't want to copy/paste the contents of the DataTemplate which would result in maintenance headaches.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

眼眸 2024-09-12 13:45:57

您在此处使用的内容称为隐式数据模板。而你要求的是一个明确的。要实现此目的,您可以使用显式资源键:

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

稍后在 xaml 中:

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

另一种解决方案是通过 在适当的控件/页面内合并字典

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

What you are using here is called implicit data template. And you are asking for an explicit one. To accomplish this you could use explicit resource key:

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

And later in xaml:

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

Another solution would be one resource dictionary (with implicit data templates) used via Merged Dictiories inside appropriate Control/Page.

I prefer the first approach, because it's easier to maintain (implicit styles are way harder to trace).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文