此页面有用吗?
您对此内容的反馈非常重要。 请告诉我们您的想法。
更多反馈?
1500 个剩余字符
导出 (0) 打印
全部展开
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。
译文
原文

DependencyObject.SetValue 方法

DependencyObject 设置依赖项属性的本地值。

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

public void SetValue(
	DependencyProperty dp,
	Object value
)

参数

dp
类型:System.Windows.DependencyProperty
要设置的依赖项属性的标识符。
value
类型:System.Object
新的本地值。

异常条件
ArgumentException

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

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

相反,若要使用 SetValue 的托管代码版本,您必须提供 DependencyProperty 对象的输入。 您一般从作为依赖项属性标识符的公共静态属性获取此值,该属性存在于拥有依赖项属性本身的同一对象上。 请注意并非所有属性都是依赖项属性,这意味着 SetValue 的托管代码版本不能用于访问 Silverlight 的托管 API 中所有可能的属性(您只能访问依赖项属性)。

对于用户代码,通常不需要调用 SetValue 通常 Silverlight 属性或自定义依赖项属性具有包装它的 CLR 属性,您可以通过传统的 CLR 用法设置属性值。 有以下三种更常使用 SetValue 的值得注意的情况:

  • 您正在定义自定义依赖项属性。 将调用 SetValue 作为为 CLR 用法定义您自己的属性 set 访问器的一部分。 有关详细信息,请参见自定义依赖项对象和依赖项属性

  • 您正在定义回调或处于已经获得一个 DependencyProperty 标识符的其他作用域中,在该作用域中可能存在多个您要与之交互的依赖项属性。 在这些情况下,调用 SetValue 传递标识符可能更简单。

  • DependencyProperty 标识符引用附加属性(或您不确定它是附加属性还是具有 CLR 包装的依赖项属性)。 附加属性还具有专用的 get 和 set 访问器,这样类型通常更为安全,但是如果您已具有标识符,使用 SetValue 仍可能更为方便。

JavaScript API 说明

SetValue 的 JavaScript 实现显著不同,主要因为将其第一个参数的输入类型作为名称字符串处理而非作为 DependencyProperty 对象处理。 您可以使用 JavaScript SetValue 方法设置对 JavaScript API 可用的任意 Silverlight 属性的值。 但是,您通常不需要使用此方法来设置属性值,因为所有 Silverlight 属性都支持 JavaScript 中更直接的"以圆点分隔"的属性语法。

版本说明

突发模式注释

在 Silverlight 3 中,如果在活动动画中间的属性上调用 SetValue,结果将仅针对那一个时间间隔。SetValue 会适当更改该值,但在下一个时间间隔,动画会破坏该值。 从视觉上看,这种情况通常就像什么都没有发生(新值变化太快以致其难以觉察)。 SetValue  调用未更改动画的基值(GetAnimationBaseValue 结果)。停止动画时,基值将返回给在开始动画之前属性所具有的值 如果应用程序面向 Silverlight 3,则此行为将保留为突发模式行为。

在 Silverlight 4 中或之后,如果在活动动画的中间发生属性值更改,SetValue 调用将修改动画的基值。 停止动画时,该动画将返回动画过程中设置的新基值。 这与 WPF 中的行为相同。

下面的示例显示一个简单的依赖项属性声明。 SetValue 的调用构成新依赖项属性的 CLR 包装的完整 set 访问器实现。


public class Fish : Control
{
    public static readonly DependencyProperty SpeciesProperty =
    DependencyProperty.Register(
    "Species",
    typeof(string),
    typeof(Fish), null
    );
    public string Species
    {
        get { return (string)GetValue(SpeciesProperty); }
        set { SetValue(SpeciesProperty, (string)value); }
    }
}


Silverlight

受以下版本支持:5、4、3

Silverlight for Windows Phone

受以下版本支持:Windows Phone OS 7.1、Windows Phone OS 7.0

有关 Silverlight 支持的操作系统和浏览器的列表,请参见 支持的操作系统和浏览器

社区附加资源

添加
显示:
© 2015 Microsoft