Procedura: creare un oggetto ContextMenu condiviso

Aggiornamento: novembre 2007

È possibile condividere un oggetto ContextMenu con più controlli definendo ContextMenu come risorsa e impostando la proprietà ContextMenu dei controlli su un riferimento di ContextMenu. È possibile specificare se i controlli condividono lo stesso oggetto ContextMenu o se ogni controllo dispone di un proprio oggetto ContextMenu impostando la proprietà Attributo x:Shared

Esempio

Nell'esempio riportato di seguito viene creato ContextMenu come risorsa e vengono assegnati riferimenti a quattro controlli. Nell'esempio Attributo x:Shared viene impostato su ContextMenu su true, pertanto i quattro controlli condividono la stessa istanza di ContextMenu. È possibile verificare questa condizione selezionando il primo oggetto MenuItem nell'oggetto ContextMenu di un controllo e osservando che MenuItem viene selezionato nell'oggetto ContextMenu degli altri controlli.

<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}" />

Nell'esempio riportato di seguito viene creato ContextMenu come risorsa e vengono assegnati riferimenti a quattro controlli. Nell'esempio Attributo x:Shared viene impostato su ContextMenu su false, pertanto per ogni controllo viene utilizzata una nuova istanza di ContextMenu. È possibile verificare questa condizione selezionando il primo oggetto MenuItem nell'oggetto ContextMenu di un controllo e osservando che MenuItem non viene selezionato nell'oggetto ContextMenu degli altri controlli.

<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}" />

Per l'esempio completo, vedere Esempio di oggetto ContextMenu condiviso tra più controlli.

Vedere anche

Attività

Procedura: attivare un oggetto ContextMenu su un controllo disattivato

Concetti

Cenni preliminari sull'oggetto ContextMenu

Riferimenti

Menu

MenuItem