FeatureProvider クラス

更新 : 2007 年 11 月

機能にクラス固有の処理を追加します。

名前空間 :  Microsoft.Windows.Design.Features
アセンブリ :  Microsoft.Windows.Design.Extensibility (Microsoft.Windows.Design.Extensibility.dll 内)

構文

'宣言
Public MustInherit Class FeatureProvider
'使用
Dim instance As FeatureProvider
public abstract class FeatureProvider
public ref class FeatureProvider abstract
public abstract class FeatureProvider

解説

抽象 FeatureProvider クラスから派生して、カスタム コントロールのデザイン時の外観または動作を拡張します。

機能プロバイダは機能コネクタによって管理され、FeatureAttribute メタデータ属性を介してオブジェクトと関連付けられます。機能コネクタは、このメタデータから FeatureProvider 型を検出します。FeatureManager は、検出されたすべての機能プロバイダに対して必要な機能コネクタを識別します。

一般的な機能プロバイダの実装には、選択装飾、コンテキスト メニュー、プロパティ エディタなどがあります。

機能プロバイダをデザイン サーフェイス上の主要選択にアタッチするには、機能プロバイダの 1 つから派生する際に、PrimarySelectionPolicy を次のように適用します : PrimarySelectionAdornerProvider

PrimarySelectionContextMenuProvider

FeatureProvider クラスから派生して、IDiagnosticsService という名前のカスタム サービスで DiagnosticsMenuProvider という名前のカスタム機能プロバイダを実装する方法を次のコード例に示します。完全なコードの一覧については、「方法 : カスタム機能コネクタを作成する」を参照してください。

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

継承階層

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

スレッド セーフ

この型のすべてのパブリック static (Visual Basic では Shared) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

参照

参照

FeatureProvider メンバ

Microsoft.Windows.Design.Features 名前空間

FeatureConnector<TFeatureProviderType>

FeatureManager

PrimarySelectionAdornerProvider

PrimarySelectionContextMenuProvider

その他の技術情報

方法 : カスタム機能コネクタを作成する

機能プロバイダと機能コネクタ

WPF デザイナの機能拡張について