有人知道为什么菜单项绑定不起作用吗?
<ToggleButton Name="toggleButton" Checked="checkBoxPublish_Checked" >
<ToggleButton.Resources>
<converters:BooleanToHiddenVisibility x:Key="boolToVis"/>
</ToggleButton.Resources>
<Grid>
<Image Height="auto" HorizontalAlignment="Left" Margin="5" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="auto" />
<Viewbox >
<TextBlock Text="Blocked" Opacity="0.7" Foreground="Red" Visibility="{Binding Path=IsChecked, ElementName=toggleButton, Converter={StaticResource boolToVis}}"/>
</Viewbox>
</Grid>
<ToggleButton.ContextMenu>
<ContextMenu StaysOpen="True" >
<MenuItem x:Name="menuItemBlock" Header="Block" Click="menuItemClick" IsCheckable="True" IsChecked="{Binding ElementName=toggleButton, Path=IsChecked}"/>
<MenuItem x:Name="menuItemIgnorePtz" Header="Ignore Ptz" Click="menuItemClick" IsCheckable="True" />
</ContextMenu>
</ToggleButton.ContextMenu>
</ToggleButton>
我猜测这是您在使用数据绑定时遇到问题的上下文菜单。
切换按钮不在上下文菜单的逻辑树中,因此无法使用 ElementName 找到切换按钮,请参阅Link https://web.archive.org/web/20151023033522/http://blogs.msdn.com:80/b/mikehillberg/archive/2008/05/23/of-logical-and-visual-trees-in-wpf.aspx
这就是为什么您在 VS 的输出窗口中收到该绑定错误的原因:
System.Windows.Data 错误:4:找不到绑定源
参考“ElementName=toggleButton”。
BindingExpression:Path=IsChecked;数据项=空;目标元素是
'MenuItem' (名称='menuItemBlock');目标属性是“IsChecked”
(输入“布尔值”)
要修复此问题,请使用 FindAncestor 查找切换按钮:
<MenuItem
Header="Block"
IsCheckable="True"
IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.IsChecked}" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)