使用SetCurrentValue 方法在控件内部设置依赖属性的值
当你写一个控件的时候,你可能会想设置控件自己拥有的依赖属性的值。举个例子,一个数字递增递减的控件通过点击箭头按钮改变数字的值。
但是问题是直接设置本地属性值,会覆盖其他来源对属性值的改变,比如绑定。如果直接设置本地属性,该属性上所有的绑定都会失效。
这种情况需要使用DependencyObject.SetCurrentValue 方法在控件内部来设置当前属性值。这可能和强制返回有点类似,属性的有效值会被改变,但是不会影响属性来源。
控件应该使用SetCurrentValue 设置自己定义的依赖属性值,CLR属性使用SetValue方法。
**************************
个人总结了下,其实就是使用SetValue方法会覆盖所有依赖属性上的其它操作,例如触发器、数据绑定等。要消除这个影响,保留触发器、数据绑定等就使用SetCurrentValue。