导出 (0) 打印
全部展开

DependencyObject.SetValue 方法 (DependencyProperty, Object)

更新:2007 年 11 月

设置依赖项属性的本地值,该依赖项属性由其标识符指定。

命名空间:  System.Windows
程序集:  WindowsBase(在 WindowsBase.dll 中)

public void SetValue(
	DependencyProperty dp,
	Object value
)
public void SetValue(
	DependencyProperty dp,
	Object value
)
public function SetValue(
	dp : DependencyProperty, 
	value : Object
)
不能在 XAML 中使用方法。

参数

dp
类型:System.Windows.DependencyProperty

要设置的依赖项属性的标识符。

value
类型:System.Object

新的本地值。

异常条件
InvalidOperationException

试图修改只读依赖项属性,或试图修改密封 DependencyObject 上的属性。

ArgumentException

value 的类型不是为 dp 属性注册时使用的正确类型。

如果提供的类型与最初注册时为依赖项属性声明的类型不匹配,则会引发异常。应始终以适当的类型提供 value 参数。

异常情况可能受 ValidateValueCallback 回调的影响,该回调存在于所设置依赖项属性的依赖项属性标识符上。否则,提供的值可能无法满足常规类型检查条件(例如,在本机类型为 Double 时传递字符串)。

本示例演示如何使用 DependencyProperty 字段来支持公共语言运行时 (CLR) 属性,从而定义一个依赖项属性。当您定义自己的属性并需要它们支持 Windows Presentation Foundation (WPF) 功能的诸多方面(包括样式、数据绑定、继承、动画和默认值)时,应将其实现为依赖项属性。

以下示例首先通过调用 Register 方法来注册一个依赖项属性。用于存储依赖项属性的名称和特征的标识符字段的名称必须是作为 Register 调用的一部分为依赖项属性选择的 Name,并追加字符串 Property。例如,如果使用 LocationName 注册一个依赖项属性,则为依赖项属性定义的标识符字段必须名为 LocationProperty

在此示例中,依赖项属性的名称及其 CLR 访问器均为 State;标识符字段为 StateProperty;属性的类型为 Boolean;注册依赖项属性的类型为 MyStateControl

如果不遵循此命名模式,则设计器可能无法正确地报告您的属性,而且属性系统样式应用程序的某些方面可能不会以预期的方式工作。

还可以为依赖项属性属性指定默认元数据。此示例将 State 依赖项属性的默认值注册为 false

public class MyStateControl : ButtonBase
{
  public MyStateControl() : base() { }
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); } 
  }
  public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
    "State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}


有关完整示例,请参见 具有依赖项属性的自定义类的示例

有关如何以及为何实现一个依赖项属性,而非仅使用私有字段支持 CLR 属性的更多信息,请参见依赖项属性概述

Windows Vista

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

.NET Framework

受以下版本支持:3.5、3.0

社区附加资源

添加
显示:
© 2015 Microsoft