我有一堆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时,菜单显示正常:
但是,单击每个菜单项(“从过滤视图中删除项目”和“清除过滤器”)不会调用相应的执行功能。如何让Setter属性保留数据上下文?即当我点击菜单项时,为什么不触发底层的Command对象?
答案 0 :(得分:0)
事实证明,setter属性没有对数据上下文的可见性。创建实现Freezable的代理绑定类会将属性链接到数据上下文。 Per Thomas Levesque的博客: