Cómo: Crear un control ContextMenu compartido
Actualización: noviembre 2007
Puede compartir un objeto ContextMenu con más de un control definiendo ContextMenu como un recurso y estableciendo la propiedad ContextMenu de los controles en una referencia de ContextMenu. Puede especificar si los controles comparten el mismo objeto ContextMenu o cada uno de ellos tiene su propio ContextMenu estableciendo la propiedad Atributo x:Shared.
Ejemplo
En el ejemplo siguiente se crea un objeto ContextMenu como un recurso y se asignan las referencias a cuatro controles. En el ejemplo se establece el Atributo x:Shared de ContextMenu en true, por lo que los cuatro controles comparten la misma instancia de ContextMenu. Puede comprobarlo activando el primer elemento MenuItem del objeto ContextMenu de un control y observando que MenuItem se activa en los objetos ContextMenu de los demás 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}" />
En el ejemplo siguiente se crea un objeto ContextMenu como un recurso y se asignan las referencias a cuatro controles. En el ejemplo se establece el Atributo x:Shared de ContextMenu en false, por lo que se utiliza una nueva instancia de ContextMenu para cada control. Puede comprobarlo activando el primer elemento MenuItem del objeto ContextMenu de un control y observando que MenuItem no se activa en los objetos ContextMenu de los demás 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}" />
Para obtener el ejemplo completo, vea Ejemplo ContextMenu Shared Among Controls.
Vea también
Tareas
Cómo: Habilitar un elemento ContextMenu en un control deshabilitado
Conceptos
Información general sobre ContextMenu