【问题标题】:Binding doesn't get updated in DefiningGeometry绑定没有在 DefiningGeometry 中更新
【发布时间】:2012-02-01 23:43:32
【问题描述】:

我有两个 DP,我在 DefiningGeometry 获取更新:

protected override Geometry DefiningGeometry
{
    get
    {
        StartSc = sc.Transform(Start);
        EndSc = sc.Transform(End);
        //Start and End are also dependencies properties.    
    ...
    }
}

我绑定到 StartSc 和 EndSc,但目标永远不会更新,它始终保持默认值 0。Start 和 End 更改,所以这不是问题,我想知道 DefiningGeometry get 中的分配是否没有t 对属性有影响。有没有人发现任何明显的错误?

注意:我有相同的变量名称,它们从派生类中隐藏了 DP,删除了上述代码的隐藏部分有效,但下面的答案不管怎样都有效。

【问题讨论】:

  • 明显的错误是你一开始就在吸气剂中设置了东西。
  • @H.B.这不会更新 DP 还是设计错误?
  • 您通常不应该在 getter 中设置值。

标签: c# wpf data-binding dependency-properties


【解决方案1】:

如果你绑定到 DP 并且你在你想要使用SetCurrentValue 的控件代码中(不是使用SetValue 的CLR 包装器(StartScEndSc))因为否则你会用具体的值覆盖现有的绑定。

正如我所说,避免在 getter 中做事,真的很难说它们何时以及多久被调用一次。

【讨论】:

  • 我在隐藏 DP 的派生类中有相同的 var 名称,因此一旦我删除了这些变量,上面的代码就可以正常工作。无论哪种方式,您的答案都有效。谢谢。
猜你喜欢
  • 1970-01-01
  • 2011-07-25
  • 2017-05-11
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2017-08-25
  • 2020-04-21
  • 2023-03-08
相关资源
最近更新 更多