Jie*_*eng 49 wpf dependency-properties setvalue setcurrentvalue
我问这个的原因是因为我被@Greg D(来自这个问题)的推荐用来SetCurrentValue()
代替,但看看文档并没有看到差异.或者什么"不改变其价值来源"意味着什么呢?
设置依赖项属性的本地值,由其依赖项属性标识符指定.
设置依赖项属性的值而不更改其值源.
Ken*_*art 55
您提供的MSDN链接说得很好:
此方法由组件使用,该组件以编程方式设置其自身属性之一的值,而不禁用应用程序声明的属性使用.SetCurrentValue方法更改属性的有效值,但现有的触发器,数据绑定和样式将继续工作.
假设您正在编写TextBox
控件,并且您已经公开了Text
人们经常使用的属性,如下所示:
<TextBox Text="{Binding SomeProperty}"/>
Run Code Online (Sandbox Code Playgroud)
在您的控件代码中,如果您打电话,SetValue
您将使用您提供的任何内容覆盖绑定.SetCurrentValue
但是,如果调用,将确保属性采用给定值,但不会销毁任何绑定.
据我所知,格雷格的建议是不正确的.您应该始终使用GetValue
/ SetValue
来自您的CLR包装器属性.SetCurrentValue
在需要属性获取给定值但不想覆盖已针对您的属性配置的任何绑定,触发器或样式的场景中更有用.