WPF菜单项绑定器isChecked不工作

任何人都知道为什么菜单项绑定不起作用?

<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切换按钮,看到http://blogs.msdn.com/b/mikehillberg/archive/2008/05/23/of-logical-and -visual树功能于wpf.aspx

这就是为什么你在VS在输出窗口,结合得到一个错误:

System.Windows.Data错误:4:找不到源与参考'的ElementName =切换按钮'结合。 BindingExpression:路径=器isChecked; DataItem的= NULL; 目标元素是'菜单项“(名称='menuItemBlock'); target属性是“器isChecked”(输入“布尔”)

要修复,查找使用FindAncestor切换按钮:

<MenuItem
Header="Block"
IsCheckable="True"
IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ContextMenu}, Path=PlacementTarget.IsChecked}" />

分类:WPF 时间:2015-03-15 人气:5
本文关键词: WPF,菜单项,器isChecked
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.620 (s). 10 q(s)