XAML和Caliburn.Micro MVVM:样式资源引用数据模板中的另一个样式资源

时间:2015-01-13 00:29:45

标签: c# wpf xaml mvvm caliburn.micro

所以,我在Visual Studio中创建了一个UI,由于所有重复的元素,我在用户控件的Resources部分使用了很多元素。我尝试做的是使用文件中的另一个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>

谢谢!

1 个答案:

答案 0 :(得分:0)

你只需给你的UserControl一个名字,例如“root”,然后使用ElementName绑定:

<ContentControl Style="{Binding ElementName=root,Path=DataContext.WhateverProperty}" />