Я использую следующую HierarchicalDataTemplate для привязки коллекции MenuViewModels к элементу управления 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>
Все это работает нормально, однако у меня есть требование удалить определенные пункты меню на основе определенных состояний(например, я могу захотеть показывать меню верхнего уровня «Редактировать» только при активном экране редактирования). Для этого у меня есть свойство IsVisible в MenuViewModel, которое, в свою очередь, связано с помощью преобразователя booleanToVisibility со свойством Visibility MenuItem.(Устанавливается в HierarchialDataTameplate.ItemContainerStyle, который, я думаю, в этом и заключается моя проблема)
Это прекрасно работает для дочерних пунктов меню, но не влияет на элементы меню верхнего уровня.
У меня естьразбил быстрый пример, показывающий проблему здесь (VS2010 .sln)
Мой вопрос: как я могу связать свойство видимости в MenuItem верхнего уровня с ViewModel?