다음을 통해 공유


FeatureProvider 클래스

기능에 클래스별 구성 정보를 추가합니다.

상속 계층 구조

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.Features
어셈블리:  Microsoft.Windows.Design.Extensibility(Microsoft.Windows.Design.Extensibility.dll)

구문

‘선언
Public MustInherit Class FeatureProvider
public abstract class FeatureProvider
public ref class FeatureProvider abstract
[<AbstractClass>]
type FeatureProvider =  class end
public abstract class FeatureProvider

FeatureProvider 형식에서는 다음과 같은 멤버를 노출합니다.

생성자

  이름 설명
Protected 메서드 FeatureProvider FeatureProvider 클래스의 새 인스턴스를 초기화합니다.

위쪽

메서드

  이름 설명
Public 메서드 Equals 지정한 Object가 현재 Object와 같은지 여부를 확인합니다. (Object에서 상속됨)
Protected 메서드 Finalize 가비지 수집에서 회수하기 전에 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드 GetHashCode 특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨)
Public 메서드 GetType 현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드 MemberwiseClone 현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드 ToString 현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)

위쪽

설명

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

스레드로부터의 안전성

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

참고 항목

참조

Microsoft.Windows.Design.Features 네임스페이스

FeatureConnector<TFeatureProviderType>

FeatureManager

PrimarySelectionAdornerProvider

PrimarySelectionContextMenuProvider

기타 리소스

방법: 사용자 지정 기능 커넥터 만들기

기능 공급자 및 기능 커넥터

WPF Designer 확장성 이해