C# MenuItem可见性绑定的上下文菜单
我需要为菜单项创建上下文菜单。关联菜单的可见性绑定到ViewModel 当属性使用MVVM灯光更改为true时,即使没有右键单击菜单项,也会在UI中显示上下文菜单。当值为false时,如何隐藏上下文菜单,并使其仅在右键单击时可见C# MenuItem可见性绑定的上下文菜单,c#,wpf,mvvm-light,C#,Wpf,Mvvm Light,我需要为菜单项创建上下文菜单。关联菜单的可见性绑定到ViewModel 当属性使用MVVM灯光更改为true时,即使没有右键单击菜单项,也会在UI中显示上下文菜单。当值为false时,如何隐藏上下文菜单,并使其仅在右键单击时可见 private Boolean _IsEditable; public Boolean IsEditable { get { return _IsEditable; } set { if (_IsEditable == value
private Boolean _IsEditable;
public Boolean IsEditable
{
get { return _IsEditable; }
set
{
if (_IsEditable == value) return;
_IsEditable = value;
RaisePropertyChanged("IsEditable");
}
}
<Menu DockPanel.Dock="Top">
<MenuItem Header="{Binding Menu.Business}" Visibility="{Binding allowUI, Converter={StaticResource BoolToVisConverter} }">
<MenuItem.ContextMenu>
<ContextMenu Visibility="{Binding Menu.IsEditable, Converter={StaticResource BoolToVisConverter} }">
<MenuItem>
<MenuItem.Header>
<TextBox Text="{Binding Menu.Business, UpdateSourceTrigger=PropertyChanged}" LostFocus="end_change_UI" />
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</MenuItem.ContextMenu>
</MenuItem>
</Menu>
private Boolean可编辑;
公共布尔值可编辑
{
获取{return\u IsEditable;}
设置
{
if(_IsEditable==值)返回;
_IsEditable=值;
RaisePropertyChanged(“IsEditable”);
}
}
您可以将样式
应用于菜单项
,当可编辑
源属性设置为真
时,该样式只设置上下文菜单
属性:
<Menu DockPanel.Dock="Top">
<MenuItem Header="{Binding Menu.Business}" Visibility="{Binding allowUI, Converter={StaticResource BoolToVisConverter} }">
<MenuItem.Style>
<Style TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Menu.IsEditable}" Value="True">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem>
<MenuItem.Header>
<TextBox Text="{Binding Menu.Business, UpdateSourceTrigger=PropertyChanged}" LostFocus="end_change_UI" />
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
</Menu>
您可以将
样式
应用于菜单项
,当可编辑
源属性设置为真
时,该样式只设置上下文菜单
属性:
<Menu DockPanel.Dock="Top">
<MenuItem Header="{Binding Menu.Business}" Visibility="{Binding allowUI, Converter={StaticResource BoolToVisConverter} }">
<MenuItem.Style>
<Style TargetType="MenuItem" BasedOn="{StaticResource {x:Type MenuItem}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Menu.IsEditable}" Value="True">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem>
<MenuItem.Header>
<TextBox Text="{Binding Menu.Business, UpdateSourceTrigger=PropertyChanged}" LostFocus="end_change_UI" />
</MenuItem.Header>
</MenuItem>
</ContextMenu>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
</Menu>
谢谢,就这么简单!工作完美谢谢这么简单!完美地工作