FeatureProvider, classe

Mise à jour : novembre 2007

Ajoute à une fonctionnalité une contribution spécifique à la classe.

Espace de noms :  Microsoft.Windows.Design.Features
Assembly :  Microsoft.Windows.Design.Extensibility (dans Microsoft.Windows.Design.Extensibility.dll)

Syntaxe

Public MustInherit Class FeatureProvider

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

Notes

Dérive de la classe abstraite FeatureProvider pour étendre le moment du design de vos contrôles personnalisés.

Les fournisseurs de fonctionnalités sont gérés par connecteurs de fonctionnalités et sont associés aux objets à travers l'attribut de métadonnées FeatureAttribute. Le connecteur de fonctionnalités découvre des types FeatureProvider à partir de ces métadonnées. FeatureManager identifie le connecteur de fonctionnalités requis pour chaque fournisseur de fonctionnalités découvert.

Les implémentations communes d'un fournisseur de fonctionnalités regroupent les ornements, les menus contextuels et les éditeurs de propriétés.

Pour joindre un fournisseur de fonctionnalités à la sélection primaire sur l'aire de conception, dérivez de l'un des fournisseurs de fonctionnalités auquel PrimarySelectionPolicy a été par exemple PrimarySelectionAdornerProvider ou

PrimarySelectionContextMenuProvider.

Exemples

L'exemple de code suivant indique comment dériver de la classe FeatureProvider pour implémenter un fournisseur de fonctionnalités personnalisé nommé DiagnosticsMenuProvider avec un service personnalisé nommé IDiagnosticsService. Pour obtenir l'intégralité du code, consultez Comment : créer un connecteur de fonctionnalités personnalisé.

' 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();
    }
}

Hiérarchie d'héritage

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

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Voir aussi

Référence

Membres FeatureProvider

Microsoft.Windows.Design.Features, espace de noms

FeatureConnector<TFeatureProviderType>

FeatureManager

PrimarySelectionAdornerProvider

PrimarySelectionContextMenuProvider

Autres ressources

Comment : créer un connecteur de fonctionnalités personnalisé

Fournisseurs de fonctionnalités et connecteurs de fonctionnalités

Fonctionnement de l'extensibilité du concepteur WPF