【发布时间】:2017-07-23 15:54:14
【问题描述】:
这是我的 ContextMenu 的样式:
<Style x:Key="DIOStyle" TargetType="ContentControl">
<Setter Property="Tag" Value="{Binding Content,RelativeSource={RelativeSource Mode=Self}}"/>
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Style="{StaticResource DeleteMenuItemStyle}"/>
<!--<MenuItem Header="Normality">
<MenuItem Style="{StaticResource NcMenuItemStyle}"/>
<MenuItem Style="{StaticResource NaMenuItemStyle}"/>
</MenuItem>-->
<MenuItem Style="{StaticResource BothContactsMenuItemStyle}"/>
</ContextMenu>
</Setter.Value>
</Setter>
...
这是我的 MenuItem 的样式:
<Style x:Key="BothContactsMenuItemStyle" TargetType="MenuItem">
<Setter Property="Header" Value="Both Contacts"/>
<Setter Property="Command" Value="{Binding PlacementTarget.Tag.BothNaNcChangeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}}"/>
<Setter Property="Icon">
<Setter.Value>
<Image Style="{StaticResource Tick16Style}" Visibility="{Binding PlacementTarget.Tag.BothNaNc, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}, Converter={StaticResource BoolToVis}}"/>
</Setter.Value>
</Setter>
</Style>
命令绑定正在工作,而不是图标可见性绑定给我这个错误:
System.Windows.Data 错误:4:找不到绑定源 参考'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ContextMenu',AncestorLevel='1''。 BindingExpression:Path=PlacementTarget.Tag.BothNaNc;数据项=空; 目标元素是'图像'(名称='');目标属性是“可见性” (类型“可见性”)
为什么? 请注意,这是有效的:
<MenuItem Header="TEST" Visibility="{Binding PlacementTarget.Tag.BothNaNc, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ContextMenu}, Converter={StaticResource BoolToVis}}"/>
【问题讨论】:
标签: c# wpf data-binding contextmenu visibility