Como: Criar um ContextMenu compartilhado
Você pode compartilhar um ContextMenu entre mais de um controle definindo o ContextMenu como um recurso e configurando a propriedade ContextMenu dos controles para um referência ao ContextMenu. Você pode especificar se os controles compartilham o mesmo ContextMenu ou se cada controle tem seu próprio ContextMenu através da configuração da propriedade Atributo x:Shared.
Exemplo
O exemplo a seguir cria um ContextMenu como um recurso e atribui as referências a quatro controles. O exemplo define Atributo x:Shared no ContextMenu como true, então os quatro controles compartilham a mesma instância do ContextMenu. Você pode verificar isso marcando o primeiro MenuItem no ContextMenu de um dos controles e verificando que o MenuItem é marcado no ContextMenu dos outros controles.
<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}" />
O exemplo a seguir cria um ContextMenu como um recurso e atribui as referências a quatro controles. O exemplo define Atributo x:Shared no ContextMenu como false, então uma nova instância do ContextMenu é usada por cada controle. Você pode verificar isso marcando o primeiro MenuItem no ContextMenu de um dos controles e verificando que o MenuItem não é marcado nos ContextMenu dos outros controles.
<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}" />
For the complete sample, see ContextMenu compartilhado entre controles de exemplo.
Consulte também
Tarefas
Como: Habilitar um ContextMenu em um controle desabilitado