ResourceDictionary
にContextMenu
があります。 ContextMenu
は、ビューモデルプロパティの値に応じて非表示または表示する必要がありますが、機能しません。ResourceDictionaryのバインドが機能しない
これは私のXAMLコード(ControlBase
がUserControl
から派生)である:
<control1:ControlBase>
<UserControl.Resources>
<ResourceDictionary>
<HierarchicalDataTemplate ItemsSource="{Binding InfraNetworkItems}">
<StackPanel>
<StackPanel.ContextMenu>
<ContextMenu DataContext="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource Self}}">
<MenuItem Header="Delete"
Visibility="{Binding
DataContext.MyViewModel.DeleteEnabled,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=control1:ControlBase},
Converter={StaticResource
BooleanVisibilityConverter}}" />
</ContextMenu>
</StackPanel.ContextMenu>
</StackPanel>
</HierarchicalDataTemplate>
</ResourceDictionary>
</UserControl.Resources>
</control1:ControlBase>
DeleteEnabled
は、ビューモデルにbool
プロパティです。問題を解決するための
私の以前の試みは、この仮定に基づいています。
ContextMenu
はItemsSource
セットを持っていHierarchicalDataTemplate
の内側にあります。私の財産はこのItemSource
のメンバーではなく、ビューモデルに属します。したがって、私は、このコード行を試してみたが、何の効果なし:私はItemSource
オブジェクトにビューモデルからDeleteEnabled
プロパティをコピーする場合
Visibility="{Binding DataContext.MyViewModel.DeleteEnabled,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=control1:ControlBase},
Converter={StaticResource BooleanVisibilityConverter}}"
しかし、それは動作します:
Visibility="{Binding DeleteEnabled, Converter={StaticResource BooleanVisibilityConverter}}"