XAML Menuitem可见性绑定到另一个控件或触发器不起作用

时间:2011-08-25 16:04:26

标签: wpf xaml binding visibility

Visibility="{Binding Path=Visibility, ElementName=btnUndo}"/>

我正在尝试将menuitems可见性绑定到另一个控件可见性(btnUndo)。

控制可见性受限于触发器

        <Style x:Key="undoStyle">
            <Style.Triggers>
                <DataTrigger Binding="{Binding SelectedItem.isEdited, ElementName=lvBatches}" Value="True">
                    <Setter Property="FrameworkElement.Visibility" Value="Visible"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding SelectedItem.isEdited, ElementName=lvBatches}" Value="False">
                    <Setter Property="FrameworkElement.Visibility" Value="Collapsed"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>

我尝试将MenuItem绑定到同一个触发器,但这也不起作用。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

ContextMenus存在于Adorner Layer中,它与UI层不是同一个Visual Tree。

我知道您可以在MenuItem中绑定类似以下内容的内容,这将返回附加Control的{​​{1}},从那里您可以找到数据你正在寻找。

ContextMenu

例如,您可以创建一个转换器,它从指定的控件遍历{Binding Path=PlacementTarget, RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}} ,直到找到它正在查找的对象,或者您可以绑定到DataContext并在ViewModel中查找特定值。