次の方法で共有


方法 : 共有 ContextMenu を作成する

更新 : 2007 年 11 月

ContextMenu をリソースとして定義し、コントロールの ContextMenu プロパティを ContextMenu の参照に設定することによって、ContextMenu を複数のコントロールで共有できます。x:Shared 属性 プロパティを設定することによって、コントロールが同じ ContextMenu を共有するのか、各コントロールが独自の ContextMenu を持つのかを指定できます。

使用例

次の例では、ContextMenu をリソースとして作成し、4 つのコントロールに参照を割り当てます。ContextMenux: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 つのコントロールに参照を割り当てます。ContextMenux: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 を有効にする

概念

ContextMenu の概要

参照

Menu

MenuItem