方法 : 共有 ContextMenu を作成する
更新 : 2007 年 11 月
ContextMenu をリソースとして定義し、コントロールの ContextMenu プロパティを ContextMenu の参照に設定することによって、ContextMenu を複数のコントロールで共有できます。x:Shared 属性 プロパティを設定することによって、コントロールが同じ ContextMenu を共有するのか、各コントロールが独自の ContextMenu を持つのかを指定できます。
使用例
次の例では、ContextMenu をリソースとして作成し、4 つのコントロールに参照を割り当てます。ContextMenu の x:Shared 属性 が true に設定されているため、4 つのコントロールは ContextMenu の同じインスタンスを共有します。1 つのコントロールの ContextMenu 内の最初の MenuItem をオンにし、他のコントロールの ContextMenu 内で MenuItem がオンになっていることを確認することによって、これを検証できます。
<ContextMenu x:Key="SharedInstanceContextMenu" x:Shared="True">
<MenuItem Header="This MenuItem is checkable" IsCheckable="True" />
<Separator/>
<MenuItem Header="This is a regular MenuItem" />
</ContextMenu>
...
<Button Margin="0,5,0,0" Background="LightBlue"
Content="This Button has a ContextMenu"
ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<Button Background="Pink"
Content="This Button has the same ContextMenu"
ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<CheckBox BorderBrush="Red"
Content="This Check Box has the same ContextMenu"
ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
<CheckBox BorderBrush="Green"
Content="This Check Box has the same ContextMenu"
ContextMenu="{DynamicResource SharedInstanceContextMenu}" />
次の例では、ContextMenu をリソースとして作成し、4 つのコントロールに参照を割り当てます。ContextMenu の x:Shared 属性 が false に設定されているため、各コントロールで ContextMenu の新しいインスタンスが使用されます。1 つのコントロールの ContextMenu 内の最初の MenuItem をオンにし、他のコントロールの ContextMenu 内で MenuItem がオフになっていることを確認することによって、これを検証できます。
<ContextMenu x:Key="NonsharedInstanceContextMenu" x:Shared="False">
<MenuItem Header="This MenuItem is checkable" IsCheckable="true" />
<Separator/>
<MenuItem Header="This is a regular MenuItem" />
</ContextMenu>
...
<Button Background="LightBlue" Margin="0,5,0,0"
Content="This Button has a ContextMenu"
ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<Button Background="Pink"
Content="This Button has the same ContextMenu"
ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<CheckBox BorderBrush="Red"
Content="This Check Box has the same ContextMenu"
ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
<CheckBox BorderBrush="Green"
Content="This Check Box has the same ContextMenu"
ContextMenu="{DynamicResource NonsharedInstanceContextMenu}" />
サンプル全体については、「コントロール間で共有される ContextMenu のサンプル」を参照してください。
参照
処理手順
方法 : 無効化されているコントロールで ContextMenu を有効にする