Поделиться через


FeatureProvider - класс

Обновлен: Ноябрь 2007

Добавляет к функции дополнение, специфичное для класса.

Пространство имен:  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 определяет необходимый функциональный соединитель.

В число распространенных реализаций поставщиков функций входят декоративные элементы выделения, контекстные меню и редакторы свойств.

Для прикрепления поставщика функций к основной выбранной области в рабочей области конструирования используется наследование от одного из поставщиков функций с применением политики 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 (Shared в Visual Basic), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.

См. также

Ссылки

FeatureProvider - члены

Microsoft.Windows.Design.Features - пространство имен

FeatureConnector<TFeatureProviderType>

FeatureManager

PrimarySelectionAdornerProvider

PrimarySelectionContextMenuProvider

Другие ресурсы

Практическое руководство. Создание пользовательского соединительного элемент

Поставщики функций и соединительные элементы

Общее представление о расширяемости конструктора WPF