RequirementAttribute 类
定义 RequirementValidator 类使用的属性。
继承层次结构
System.Object
System.Attribute
Microsoft.Windows.Design.RequirementAttribute
Microsoft.Windows.Design.Policies.UsesItemPolicyAttribute
Microsoft.Windows.Design.RequiresContextItemAttribute
Microsoft.Windows.Design.RequiresServiceAttribute
命名空间: Microsoft.Windows.Design
程序集: Microsoft.Windows.Design.Extensibility(在 Microsoft.Windows.Design.Extensibility.dll 中)
语法
声明
Public MustInherit Class RequirementAttribute _
Inherits Attribute
public abstract class RequirementAttribute : Attribute
public ref class RequirementAttribute abstract : public Attribute
[<AbstractClass>]
type RequirementAttribute =
class
inherit Attribute
end
public abstract class RequirementAttribute extends Attribute
RequirementAttribute 类型公开以下成员。
构造函数
名称 | 说明 | |
---|---|---|
RequirementAttribute | 初始化 RequirementAttribute 类的新实例。 |
页首
属性
名称 | 说明 | |
---|---|---|
AllRequired | 获取指示所有相同类型的要求特性是否需要的值。 | |
TypeId | 当在派生类中实现时,获取该 Attribute 的唯一标识符。 (继承自 Attribute。) |
页首
方法
名称 | 说明 | |
---|---|---|
CreateSubscription | 返回当此特性中包含的要求发生更改时,用于通知的 RequirementSubscription 对象。 | |
Equals | 基础结构。返回一个值,该值指示此实例是否与指定的对象相等。 (继承自 Attribute。) | |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) | |
GetHashCode | 返回此实例的哈希代码。 (继承自 Attribute。) | |
GetType | 获取当前实例的 Type。 (继承自 Object。) | |
IsDefaultAttribute | 当在派生类中重写时,指示此实例的值是否是派生类的默认值。 (继承自 Attribute。) | |
Match | 当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (继承自 Attribute。) | |
MeetsRequirement | 确定 EditingContext 是否满足指定属性的要求。 | |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) | |
ToString | 返回表示当前对象的字符串。 (继承自 Object。) |
页首
显式接口实现
名称 | 说明 | |
---|---|---|
_Attribute.GetIDsOfNames | 将一组名称映射为对应的一组调度标识符。 (继承自 Attribute。) | |
_Attribute.GetTypeInfo | 检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute。) | |
_Attribute.GetTypeInfoCount | 检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute。) | |
_Attribute.Invoke | 提供对某一对象公开的属性和方法的访问。 (继承自 Attribute。) |
页首
备注
通过从抽象的 RequirementAttribute 类派生为以功能提供程序和功能连接器指定要求。
RequirementValidator 检查 RequirementAttribute 属性的类型. 对于查询的每个 RequirementAttribute,调用抽象的 MeetsRequirement 方法传递 EditingContext 的实例。 类(如 RequiresServiceAttribute)派生自 RequirementAttribute,并检查指定要求的上下文是否存在。
此系统允许设计器仅激活可在编辑上下文时成功运行的代码。
从 RequirementAttribute 中派生和实现抽象 MeetsRequirement 方法来定义您的自定义需求。
示例
以下代码示例演示如何通过使用 RequirementAttribute 派生出来的 UsesItemPolicyAttribute 将自定义代理项策略附加到功能提供程序中。 有关完整的代码清单,请参见如何:创建代理项策略。
' The DockPanelAdornerProvider class implements an adorner
' that you can use to set the Margin property by using a
' drag operation. The DockPanelPolicy class enables a
' container policy for offering additional tasks and
' adorners on the panel's children.
<UsesItemPolicy(GetType(DockPanelPolicy))> _
Class DockPanelAdornerProvider
Inherits AdornerProvider
Public Sub New()
' The adorner is a Rectangle element.
Dim r As New Rectangle()
r.Width = 23.0
r.Height = 23.0
r.Fill = AdornerColors.GlyphFillBrush
' Set the rectangle's placement in the adorner panel.
AdornerPanel.SetAdornerHorizontalAlignment(r, AdornerHorizontalAlignment.OutsideLeft)
AdornerPanel.SetAdornerVerticalAlignment(r, AdornerVerticalAlignment.OutsideTop)
Dim p As New AdornerPanel()
p.Children.Add(r)
AdornerPanel.SetTask(r, New DockPanelMarginTask())
Adorners.Add(p)
End Sub
End Class
// The DockPanelAdornerProvider class implements an adorner
// that you can use to set the Margin property by using a
// drag operation. The DockPanelPolicy class enables a
// container policy for offering additional tasks and
// adorners on the panel's children.
[UsesItemPolicy(typeof(DockPanelPolicy))]
class DockPanelAdornerProvider : AdornerProvider
{
public DockPanelAdornerProvider()
{
// The adorner is a Rectangle element.
Rectangle r = new Rectangle();
r.Width = 23.0;
r.Height = 23.0;
r.Fill = AdornerColors.GlyphFillBrush;
// Set the rectangle's placement in the adorner panel.
AdornerPanel.SetAdornerHorizontalAlignment(r, AdornerHorizontalAlignment.OutsideLeft);
AdornerPanel.SetAdornerVerticalAlignment(r, AdornerVerticalAlignment.OutsideTop);
AdornerPanel p = new AdornerPanel();
p.Children.Add(r);
AdornerPanel.SetTask(r, new DockPanelMarginTask());
Adorners.Add(p);
}
}
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。