Condividi tramite


Classe FeatureProvider

Aggiornamento: novembre 2007

Aggiunge un contributo specifico della classe a una funzionalità.

Spazio dei nomi:  Microsoft.Windows.Design.Features
Assembly:  Microsoft.Windows.Design.Extensibility (in Microsoft.Windows.Design.Extensibility.dll)

Sintassi

Public MustInherit Class FeatureProvider

Dim instance As FeatureProvider
public abstract class FeatureProvider
public ref class FeatureProvider abstract
public abstract class FeatureProvider

Note

Derivare dalla classe FeatureProvider astratta per estendere la fase di progettazione per i controlli personalizzati.

I provider di funzionalità sono gestiti dai connettori di funzionalità e sono associati agli oggetti tramite l'attributo dei metadati FeatureAttribute. Il connettore di funzionalità individua i tipi FeatureProvider da questi metadati. FeatureManager identifica il connettore di funzionalità richiesto per ogni provider di funzionalità individuato.

Le implementazioni comuni dei provider di funzionalità includono strumenti decorativi di selezione, menu di scelta rapida e editor di proprietà.

Per connettere un provider di funzionalità alla selezione primaria nell'area di progettazione, derivare da uno dei provider di funzionalità con l'oggetto PrimarySelectionPolicy, ad esempio PrimarySelectionAdornerProvider o

PrimarySelectionContextMenuProvider.

Esempi

Nell'esempio di codice seguente viene illustrato come derivare dalla classe FeatureProvider per implementare un provider di funzionalità personalizzato denominato DiagnosticsMenuProvider con un servizio personalizzato denominato IDiagnosticsService. Per l'elenco di codice completo, vedere Procedura: creare un connettore di funzionalità personalizzato.

' The DiagnosticsMenuProvider class adds a context menu item
' that displays a dialog box listing the currently running and 
' pending feature connectors. 
<FeatureConnector(GetType(DiagnosticsFeatureConnector))>  _
Public Class DiagnosticsMenuProvider
    Inherits PrimarySelectionContextMenuProvider

    Public Sub New() 
        Dim action As New MenuAction("Feature Diagnostics...")

        AddHandler action.Execute, AddressOf action_Execute 

        Items.Add(action)    
    End Sub

    Sub action_Execute(ByVal sender As Object, ByVal e As MenuActionEventArgs) 
        Dim service As IDiagnosticsService = e.Context.Services.GetRequiredService(Of IDiagnosticsService)()

        service.ShowWindow()

    End Sub

End Class
// The DiagnosticsMenuProvider class adds a context menu item
// that displays a dialog box listing the currently running and 
// pending feature connectors. 
[FeatureConnector(typeof(DiagnosticsFeatureConnector))]
public class DiagnosticsMenuProvider : PrimarySelectionContextMenuProvider 
{
    public DiagnosticsMenuProvider() 
    {
        MenuAction action = new MenuAction("Feature Diagnostics...");

        action.Execute += new EventHandler<MenuActionEventArgs>(action_Execute); 

        Items.Add(action);
    }

    void action_Execute(object sender, MenuActionEventArgs e)
    {
        IDiagnosticsService service = 
            e.Context.Services.GetRequiredService<IDiagnosticsService>();

        service.ShowWindow();
    }
}

Gerarchia di ereditarietà

System.Object
  Microsoft.Windows.Design.Features.FeatureProvider
    Microsoft.Windows.Design.Interaction.Adapter
    Microsoft.Windows.Design.Interaction.AdornerProvider
    Microsoft.Windows.Design.Interaction.ContextMenuProvider
    Microsoft.Windows.Design.Interaction.TaskProvider
    Microsoft.Windows.Design.Model.DefaultInitializer
    Microsoft.Windows.Design.Model.DesignModeValueProvider
    Microsoft.Windows.Design.Model.InstanceFactory

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

Membri FeatureProvider

Spazio dei nomi Microsoft.Windows.Design.Features

FeatureConnector<TFeatureProviderType>

FeatureManager

PrimarySelectionAdornerProvider

PrimarySelectionContextMenuProvider

Altre risorse

Procedura: creare un connettore di funzionalità personalizzato

Provider di funzionalità e connettori di funzionalità

Informazioni sull'estensibilità Progettazione WPF