XAML 和 Caliburn.Micro MVVM:引用数据模板中另一个样式资源的样式资源
XAML and Caliburn.Micro MVVM: Style resource referencing another style resource in a data template
因此,我在 Visual Studio 中创建了一个 UI,由于所有重复的元素,我在用户控件的资源部分使用了很多元素。我想要做的是使用文件中的另一个 StaticResource
作为项目的模板来遍历项目。
问题是 Datatemplate
当然会将 DataContext
切换到它正在迭代的项目。所以我想弄清楚如何获取静态资源的上下文,它位于 UserControl
的上下文中。我考虑过使用相对来源,但后来意识到 StaticResource
没有那个选项,只允许您访问上下文的资源。
对这里的操作有什么建议吗?
<Style TargetType="ItemsControl" x:Key="BeneficiaryList">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Expander Header="{Binding Name_1}">
<Expander.Resources>
<utils:BindingProxy x:Key="proxy" Data="{Binding}"/>
</Expander.Resources>
<!--Attempt at a proxy binding to access another style resource in the file. Does not work.-->
<ContentControl Style="{StaticResource proxy.Person_Template}"/>
</Expander>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
谢谢!
您只需为您的 UserControl 命名,例如“root
”,然后使用 ElementName
:
进行绑定
<ContentControl Style="{Binding ElementName=root,Path=DataContext.WhateverProperty}" />
因此,我在 Visual Studio 中创建了一个 UI,由于所有重复的元素,我在用户控件的资源部分使用了很多元素。我想要做的是使用文件中的另一个 StaticResource
作为项目的模板来遍历项目。
问题是 Datatemplate
当然会将 DataContext
切换到它正在迭代的项目。所以我想弄清楚如何获取静态资源的上下文,它位于 UserControl
的上下文中。我考虑过使用相对来源,但后来意识到 StaticResource
没有那个选项,只允许您访问上下文的资源。
对这里的操作有什么建议吗?
<Style TargetType="ItemsControl" x:Key="BeneficiaryList">
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<Expander Header="{Binding Name_1}">
<Expander.Resources>
<utils:BindingProxy x:Key="proxy" Data="{Binding}"/>
</Expander.Resources>
<!--Attempt at a proxy binding to access another style resource in the file. Does not work.-->
<ContentControl Style="{StaticResource proxy.Person_Template}"/>
</Expander>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
谢谢!
您只需为您的 UserControl 命名,例如“root
”,然后使用 ElementName
:
<ContentControl Style="{Binding ElementName=root,Path=DataContext.WhateverProperty}" />