다음을 통해 공유


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는 검색된 각 기능 공급자에 필요한 기능 커넥터를 식별합니다.

공용 기능 공급자 구현에는 선택 표시기(Adorner), 상황에 맞는 메뉴 및 속성 편집기가 포함됩니다.

디자인 화면의 기본 선택 내용에 기능 공급자를 연결하려면 PrimarySelectionPolicy가 적용된 PrimarySelectionAdornerProvider 등의 기능 공급자 중 하나에서 파생합니다.

PrimarySelectionContextMenuProvider.

예제

다음 코드 예제에서는 FeatureProvider 클래스에서 파생하여 DiagnosticsMenuProvider라는 사용자 지정 기능 공급자와 IDiagnosticsService라는 사용자 지정 서비스를 구현하는 방법을 보여 줍니다. 전체 코드는 방법: 사용자 지정 기능 커넥터 만들기를 참조하십시오.

' 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 Designer 확장성 이해