我正在使用以下HierarchicalDataTemplate将MenuViewModels的集合绑定(bind)到Menu控件:
<HierarchicalDataTemplate
DataType="{x:Type common:MenuViewModel}"
ItemsSource="{Binding Path=Children}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding Command}"/>
<Setter Property="Visibility" Value="{Binding IsVisible, Converter={StaticResource ResourceKey=boolToCollapsedConverter}}" />
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<ContentPresenter
Content="{Binding Name}"
RecognizesAccessKey="True" />
</HierarchicalDataTemplate>
一切正常,但是我需要根据特定状态删除某些菜单项(例如,如果编辑屏幕处于 Activity 状态,我可能只想显示“Edit”顶层菜单),为此,我有一个MenuViewModel的IsVisible属性,该属性又通过booleanToVisibility转换器绑定(bind)到MenuItem的Visibility属性(在HierarchialDataTameplate.ItemContainerStyle中设置,我认为这是我的问题所在)
这在子菜单项上工作正常,但对顶级菜单项没有影响。
我整理了一个显示问题here(VS2010 .sln)的简单示例
我的问题是:如何将顶级MenuItem的可见性属性绑定(bind)到ViewModel?
最佳答案
<Style x:Key="MenuItemStyle" TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding Command}"/>
<Setter Property="Visibility" Value="{Binding IsVisible, Converter={StaticResource ResourceKey=boolToCollapsedConverter}}" />
</Style>
snip...
<Menu DockPanel.Dock="Top" ItemsSource="{Binding Path=MainMenu}" ItemContainerStyle="{DynamicResource MenuItemStyle}"/>
关于wpf - 如何将顶级MenuItem上的Visibility属性绑定(bind)到ViewModel,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7352389/