WPF Setter属性不从StaticResource获取绑定

时间:2015-07-22 19:02:04

标签: c# wpf xaml mvvm data-binding

我有一堆ListBoxItems,并希望能够在右键单击时删除一个。所以我有一个声明为静态资源的上下文菜单,该资源被用作ListBoxItem样式的Setter属性之一:

    <ContextMenu x:Key="ClearFilt">
        <MenuItem Header="Remove Item from Filter View" Command="{Binding}" CommandParameter="{Binding vfm_string}"/>
        <MenuItem Header="Clear Filter" Command="{Binding}" CommandParameter="Clear"/>
    </ContextMenu>

    <Style TargetType="{x:Type ListBoxItem}">
        <Setter Property="ContextMenu" Value="{ StaticResource ClearFilt}"/>

使用此代码,当我右键单击ListBoxItem时,菜单显示正常:

enter image description here

但是,单击每个菜单项(“从过滤视图中删除项目”和“清除过滤器”)不会调用相应的执行功能。如何让Setter属性保留数据上下文?即当我点击菜单项时,为什么不触发底层的Command对象?

1 个答案:

答案 0 :(得分:0)

事实证明,setter属性没有对数据上下文的可见性。创建实现Freezable的代理绑定类会将属性链接到数据上下文。 Per Thomas Levesque的博客:

http://www.thomaslevesque.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/