Visibility
プロパティがコンバーターによって制御されるMenuItems があります。ほとんどの場合、MenuItem は同じ可視性ロジック (同じコンバーター、同じパラメーター) を持っています。再入力を避けるために、それらを仮想的にグループ化して、可視性を一度だけ設定したいと考えています。
MenuItem をネストすることでそれを実現できることはわかっています。別の方法はありますか?
Visibility
プロパティがコンバーターによって制御されるMenuItems があります。ほとんどの場合、MenuItem は同じ可視性ロジック (同じコンバーター、同じパラメーター) を持っています。再入力を避けるために、それらを仮想的にグループ化して、可視性を一度だけ設定したいと考えています。
MenuItem をネストすることでそれを実現できることはわかっています。別の方法はありますか?
あなたが何をしたいのかはっきりしていませんが、スタイルが便利だと思います. 例を挙げます。ここでは、コンテキスト メニューを持つグリッドにボタンを作成します。Button のリソースで、MenuItem のスタイル (名前は付けられていません) を作成します。スタイルでは、作成した Binding を置き換えることで、可視性がどのように動作するかを指定できます。
<Window x:Class="StackOverflow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Content="Testing" VerticalAlignment="Center" HorizontalAlignment="Center">
<Button.Resources>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Visibility" Value="{Binding SomeBinding, Converter=SomeConverter}"/>
</Style>
</Button.Resources>
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="1"/>
<MenuItem Header="2"/>
<MenuItem Header="3"/>
<MenuItem Header="4"/>
</ContextMenu>
</Button.ContextMenu>
</Button>
</Grid>
</Window>