ItemPolicy 类

用于在设计器中指定一组规则的策略。

继承层次结构

System.Object
  Microsoft.Windows.Design.Policies.ItemPolicy
    Microsoft.Windows.Design.Policies.SelectionPolicy

命名空间:  Microsoft.Windows.Design.Policies
程序集:  Microsoft.Windows.Design.Interaction(在 Microsoft.Windows.Design.Interaction.dll 中)

语法

声明
Public MustInherit Class ItemPolicy
public abstract class ItemPolicy
public ref class ItemPolicy abstract
[<AbstractClass>]
type ItemPolicy =  class end
public abstract class ItemPolicy

ItemPolicy 类型公开以下成员。

构造函数

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

页首

属性

  名称 说明
受保护的属性 Context 获取设计器的编辑上下文。
公共属性 IsSurrogate 获取一个值,该值指示策略是否为代理项策略。
公共属性 PolicyItems 获取策略中的所有项的枚举。

页首

方法

  名称 说明
公共方法 Equals 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
受保护的方法 Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
公共方法 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
公共方法 GetSurrogateItems 返回此项的代理项的可选集合。
公共方法 GetType 获取当前实例的 Type。 (继承自 Object。)
受保护的方法 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。)
受保护的方法 OnActivated 当激活策略时调用。
受保护的方法 OnDeactivated 当停用策略时调用。
受保护的方法 OnPolicyItemsChanged 引发 PolicyItemsChanged 事件。
公共方法 ToString 返回表示当前对象的字符串。 (继承自 Object。)

页首

事件

  名称 说明
公共事件 PolicyItemsChanged 当策略更改时发生。

页首

备注

从抽象 ItemPolicy 类派生以提供一组项和相应功能提供程序之间的关联。

使用策略发现在设计器中运行的项上的扩展功能。 这些策略由工具、装饰器和可扩展设计器的其他区域使用。 SelectionPolicy 类是策略的示例,该策略监视选择更改并在选择更改时引发 PolicyItemsChanged 事件。 设计器处理所有运行策略的更改事件并采取相应的操作。 对于 SelectionPolicy,设计器会查询应该可用的活动任务集以及应该在设计图面上可见的装饰器集。

策略类型的单个实例会在设计器在元数据中发现该实例时激活。 这些策略的持续时间为设计器的生存期,除非释放设计器本身,否则绝不会激活这些策略。 如果您的策略保留对进程全局资源的引用,请实现 OnDeactivated 方法,当策略管理器终止时将调用该方法。

代理政策提供了用于查找功能提供程序的备用项目集。 代理项策略通常由控件容器使用,该容器可以在它们的子级上提供其他任务和装饰器。 在此方案中,容器提供代理项策略,GetSurrogateItems 方法在其中返回所提供项的父级。

示例

下面的代码示例演示如何为主选择实现自定义代理项策略。 有关完整的代码清单,请参见如何:创建代理项策略

' The DockPanelPolicy class implements a surrogate policy that
' provides container semantics for a selected item. By using 
' this policy, the DemoDockPanel container control offers 
' additional tasks and adorners on its children. 
Class DockPanelPolicy
    Inherits PrimarySelectionPolicy

    Public Overrides ReadOnly Property IsSurrogate() As Boolean 
        Get
            Return True
        End Get
    End Property

    Public Overrides Function GetSurrogateItems( _
        ByVal item As Microsoft.Windows.Design.Model.ModelItem) _
        As System.Collections.Generic.IEnumerable( _
        Of Microsoft.Windows.Design.Model.ModelItem)

        Dim parent As ModelItem = item.Parent

        Dim e As New System.Collections.Generic.List(Of ModelItem)

        If (parent IsNot Nothing) Then

            e.Add(parent)

        End If

        Return e

    End Function

End Class
// The DockPanelPolicy class implements a surrogate policy that
// provides container semantics for a selected item. By using 
// this policy, the DemoDockPanel container control offers 
// additional tasks and adorners on its children. 
class DockPanelPolicy : PrimarySelectionPolicy 
{
    public override bool IsSurrogate 
    {
        get 
        { 
            return true;
        }
    }

    public override IEnumerable<ModelItem> GetSurrogateItems(ModelItem item) 
    {
        ModelItem parent = item.Parent;

        if (parent != null)
        {
            yield return parent;
        }
    }
}

线程安全

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

请参见

参考

Microsoft.Windows.Design.Policies 命名空间

PrimarySelectionPolicy

SelectionPolicy

FeatureProvider

FeatureConnectorAttribute

其他资源

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

了解 WPF 设计器扩展性