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), являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.
См. также
Ссылки
Microsoft.Windows.Design.Features - пространство имен
FeatureConnector<TFeatureProviderType>
PrimarySelectionAdornerProvider
PrimarySelectionContextMenuProvider
Другие ресурсы
Практическое руководство. Создание пользовательского соединительного элемент