![]() |
1
11
哇,真令人惊讶。在依赖属性上设置值时,绑定表达式将在值强制运行之前更新! 如果查看Reflector中的DependencyObject.setValueCommon,可以在方法的中途看到对Expression.setValue的调用。对将调用强制值回调的updateEffectiveValue的调用在绑定更新后的最后。 您也可以在框架类上看到这一点。从新的WPF应用程序中,添加以下XAML:
以及以下代码:
如果拖动滑块,然后单击按钮,将收到一条消息,如“值从11更改为-1;滑块从11更改为10”。 |
![]() |
2
5
旧问题的新答案::-)
在注册时
现在的绑定源
你可以这样做:
这样可以避免使用DependencyProperty的非强制值更新绑定。 |
![]() |
3
-1
你是在胁迫
同样的逻辑也适用于basevalue。它是通过值传递的(不是通过引用传递的),因此更改它不会更改实际参数。
您可能需要研究将属性数据类型更改为引用类型。然后它将通过引用传递,所做的任何更改都将反映回源代码。假设数据绑定过程不创建副本。 |
|
CasualNobody · 公开UserControls内容模板 7 年前 |
![]() |
Tom · WPF中相同usercontrol的不同实例中的不同值 7 年前 |
![]() |
Johannes · 从UserControl获取绑定列表 8 年前 |
![]() |
Mike Eason · 在数据触发器中使用依赖属性 10 年前 |