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
Spazio dei nomi Microsoft.Windows.Design.Features
FeatureConnector<TFeatureProviderType>
PrimarySelectionAdornerProvider
PrimarySelectionContextMenuProvider
Altre risorse
Procedura: creare un connettore di funzionalità personalizzato