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 类型公开以下成员。

构造函数

  名称 说明
受保护的方法 FeatureProvider 初始化 FeatureProvider 类的新实例。

页首

方法

  名称 说明
公共方法 Equals 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

备注

通过从抽象的 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();
    }
}

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

请参见

参考

Microsoft.Windows.Design.Features 命名空间

FeatureConnector<TFeatureProviderType>

FeatureManager

PrimarySelectionAdornerProvider

PrimarySelectionContextMenuProvider

其他资源

如何:创建自定义功能连接器

功能提供程序和功能连接器

了解 WPF 设计器扩展性