Classe ContextMenuProvider
Definisce un set di voci di menu visualizzate in un menu di scelta rapida.
Gerarchia di ereditarietà
System.Object
Microsoft.Windows.Design.Features.FeatureProvider
Microsoft.Windows.Design.Interaction.ContextMenuProvider
Microsoft.Windows.Design.Interaction.PrimarySelectionContextMenuProvider
Spazio dei nomi: Microsoft.Windows.Design.Interaction
Assembly: Microsoft.Windows.Design.Interaction (in Microsoft.Windows.Design.Interaction.dll)
Sintassi
'Dichiarazione
Public MustInherit Class ContextMenuProvider _
Inherits FeatureProvider
public abstract class ContextMenuProvider : FeatureProvider
public ref class ContextMenuProvider abstract : public FeatureProvider
[<AbstractClass>]
type ContextMenuProvider =
class
inherit FeatureProvider
end
public abstract class ContextMenuProvider extends FeatureProvider
Il tipo ContextMenuProvider espone i seguenti membri.
Costruttori
Nome | Descrizione | |
---|---|---|
ContextMenuProvider | Inizializza una nuova istanza della classe ContextMenuProvider. |
In alto
Proprietà
Nome | Descrizione | |
---|---|---|
Items | Ottiene le voci da aggiungere al menu di scelta rapida. |
In alto
Metodi
Nome | Descrizione | |
---|---|---|
Equals | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) | |
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object) | |
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) | |
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) | |
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) | |
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) | |
Update | Genera l'evento UpdateItemStatus in modo che sia possibile aggiornare la visibilità e lo stato di abilitazione delle voci di menu. |
In alto
Eventi
Nome | Descrizione | |
---|---|---|
UpdateItemStatus | Si verifica quando la voce di menu sta per essere visualizzata. |
In alto
Note
Ereditare dalla classe ContextMenuProvider quando si desidera aggiungere una voce a un determinato menu di scelta rapida. Applicando i criteri, ad esempio PrimarySelectionPolicy e SelectionParentPolicy, è possibile controllare quando viene creato il provider di menu di scelta rapida.
L'esistenza di ContextMenuProvider è temporanea. Non presupporre che sarà persistente per lunghi periodi di tempo.
Esempi
Nell'esempio di codice seguente viene illustrato come derivare un tipo personalizzato dalla classe PrimarySelectionContextMenuProvider. Il tipo derivato implementa un menu di scelta rapida personalizzato che imposta la proprietà Background di un controllo in fase di progettazione. Per ulteriori informazioni, vedere Procedura dettagliata: creazione di un provider di menu.
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.Windows.Design.Interaction
Imports System.Windows
Imports Microsoft.Windows.Design.Model
Imports System.Windows.Controls
Imports System.Windows.Media
' The CustomContextMenuProvider class provides two context menu items
' at design time. These are implemented with the MenuAction class.
Class CustomContextMenuProvider
Inherits PrimarySelectionContextMenuProvider
Private setBackgroundToBlueMenuAction As MenuAction
Private clearBackgroundMenuAction As MenuAction
' The provider's constructor sets up the MenuAction objects
' and the the MenuGroup which holds them.
Public Sub New()
' Set up the MenuAction which sets the control's
' background to Blue.
setBackgroundToBlueMenuAction = New MenuAction("Blue")
setBackgroundToBlueMenuAction.Checkable = True
AddHandler setBackgroundToBlueMenuAction.Execute, AddressOf SetBackgroundToBlue_Execute
' Set up the MenuAction which sets the control's
' background to its default value.
clearBackgroundMenuAction = New MenuAction("Cleared")
clearBackgroundMenuAction.Checkable = True
AddHandler clearBackgroundMenuAction.Execute, AddressOf ClearBackground_Execute
' Set up the MenuGroup which holds the MenuAction items.
Dim backgroundFlyoutGroup As New MenuGroup("SetBackgroundsGroup", "Set Background")
' If HasDropDown is false, the group appears inline,
' instead of as a flyout. Set to true.
backgroundFlyoutGroup.HasDropDown = True
backgroundFlyoutGroup.Items.Add(setBackgroundToBlueMenuAction)
backgroundFlyoutGroup.Items.Add(clearBackgroundMenuAction)
Me.Items.Add(backgroundFlyoutGroup)
' The UpdateItemStatus event is raised immediately before
' this provider shows its tabs, which provides the opportunity
' to set states.
AddHandler UpdateItemStatus, AddressOf CustomContextMenuProvider_UpdateItemStatus
End Sub
' The following method handles the UpdateItemStatus event.
' It sets the MenuAction states according to the state
' of the control's Background property. This method is
' called before the context menu is shown.
Sub CustomContextMenuProvider_UpdateItemStatus( _
ByVal sender As Object, _
ByVal e As MenuActionEventArgs)
' Turn everything on, and then based on the value
' of the BackgroundProperty, selectively turn some off.
clearBackgroundMenuAction.Checked = False
clearBackgroundMenuAction.Enabled = True
setBackgroundToBlueMenuAction.Checked = False
setBackgroundToBlueMenuAction.Enabled = True
' Get a ModelItem which represents the selected control.
Dim selectedControl As ModelItem = _
e.Selection.PrimarySelection
' Get the value of the Background property from the ModelItem.
Dim backgroundProperty As ModelProperty = _
selectedControl.Properties("Background")
' Set the MenuAction items appropriately.
If Not backgroundProperty.IsSet Then
clearBackgroundMenuAction.Checked = True
clearBackgroundMenuAction.Enabled = False
ElseIf backgroundProperty.ComputedValue.Equals(Brushes.Blue) Then
setBackgroundToBlueMenuAction.Checked = True
setBackgroundToBlueMenuAction.Enabled = False
End If
End Sub
' The following method handles the Execute event.
' It sets the Background property to its default value.
Sub ClearBackground_Execute( _
ByVal sender As Object, _
ByVal e As MenuActionEventArgs)
Dim selectedControl As ModelItem = e.Selection.PrimarySelection
selectedControl.Properties("Background").ClearValue()
End Sub
' The following method handles the Execute event.
' It sets the Background property to Brushes.Blue.
Sub SetBackgroundToBlue_Execute( _
ByVal sender As Object, _
ByVal e As MenuActionEventArgs)
Dim selectedControl As ModelItem = e.Selection.PrimarySelection
selectedControl.Properties("Background").SetValue(Brushes.Blue)
End Sub
End Class
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Windows.Design.Interaction;
using System.Windows;
using Microsoft.Windows.Design.Model;
using System.Windows.Controls;
using System.Windows.Media;
namespace CustomControlLibrary.VisualStudio.Design
{
// The CustomContextMenuProvider class provides two context menu items
// at design time. These are implemented with the MenuAction class.
class CustomContextMenuProvider : PrimarySelectionContextMenuProvider
{
private MenuAction setBackgroundToBlueMenuAction;
private MenuAction clearBackgroundMenuAction;
// The provider's constructor sets up the MenuAction objects
// and the the MenuGroup which holds them.
public CustomContextMenuProvider()
{
// Set up the MenuAction which sets the control's
// background to Blue.
setBackgroundToBlueMenuAction = new MenuAction("Blue");
setBackgroundToBlueMenuAction.Checkable = true;
setBackgroundToBlueMenuAction.Execute +=
new EventHandler<MenuActionEventArgs>(SetBackgroundToBlue_Execute);
// Set up the MenuAction which sets the control's
// background to its default value.
clearBackgroundMenuAction = new MenuAction("Cleared");
clearBackgroundMenuAction.Checkable = true;
clearBackgroundMenuAction.Execute +=
new EventHandler<MenuActionEventArgs>(ClearBackground_Execute);
// Set up the MenuGroup which holds the MenuAction items.
MenuGroup backgroundFlyoutGroup =
new MenuGroup("SetBackgroundsGroup", "Set Background");
// If HasDropDown is false, the group appears inline,
// instead of as a flyout. Set to true.
backgroundFlyoutGroup.HasDropDown = true;
backgroundFlyoutGroup.Items.Add(setBackgroundToBlueMenuAction);
backgroundFlyoutGroup.Items.Add(clearBackgroundMenuAction);
this.Items.Add(backgroundFlyoutGroup);
// The UpdateItemStatus event is raised immediately before
// this provider shows its tabs, which provides the opportunity
// to set states.
UpdateItemStatus +=
new EventHandler<MenuActionEventArgs>(
CustomContextMenuProvider_UpdateItemStatus);
}
// The following method handles the UpdateItemStatus event.
// It sets the MenuAction states according to the state
// of the control's Background property. This method is
// called before the context menu is shown.
void CustomContextMenuProvider_UpdateItemStatus(
object sender,
MenuActionEventArgs e)
{
// Turn everything on, and then based on the value
// of the BackgroundProperty, selectively turn some off.
clearBackgroundMenuAction.Checked = false;
clearBackgroundMenuAction.Enabled = true;
setBackgroundToBlueMenuAction.Checked = false;
setBackgroundToBlueMenuAction.Enabled = true;
// Get a ModelItem which represents the selected control.
ModelItem selectedControl = e.Selection.PrimarySelection;
// Get the value of the Background property from the ModelItem.
ModelProperty backgroundProperty =
selectedControl.Properties["Background"];
// Set the MenuAction items appropriately.
if (!backgroundProperty.IsSet)
{
clearBackgroundMenuAction.Checked = true;
clearBackgroundMenuAction.Enabled = false;
}
else if (backgroundProperty.ComputedValue == Brushes.Blue)
{
setBackgroundToBlueMenuAction.Checked = true;
setBackgroundToBlueMenuAction.Enabled = false;
}
}
// The following method handles the Execute event.
// It sets the Background property to its default value.
void ClearBackground_Execute(
object sender,
MenuActionEventArgs e)
{
ModelItem selectedControl = e.Selection.PrimarySelection;
selectedControl.Properties["Background"].ClearValue();
}
// The following method handles the Execute event.
// It sets the Background property to Brushes.Blue.
void SetBackgroundToBlue_Execute(
object sender,
MenuActionEventArgs e)
{
ModelItem selectedControl = e.Selection.PrimarySelection;
selectedControl.Properties["Background"].SetValue(Brushes.Blue);
}
}
}
Codice thread safe
Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Vedere anche
Riferimenti
Spazio dei nomi Microsoft.Windows.Design.Interaction
PrimarySelectionContextMenuProvider