【问题标题】:User control accumulates dependency property bindings用户控件累积依赖属性绑定
【发布时间】:2023-03-11 11:35:01
【问题描述】:

我有一个用户控件,它是一个带标签的组合框,通过调试我注意到每次打开包含用户控件的视图时,对每个模型属性的获取请求都比上次多一个!

每次打开视图时我都会重新实例化模型(出于不需要提及的原因),但似乎正在发生的事情是保留与模型的任何先前副本的绑定并且模型似乎没有被正确处理,因为它仍然通过这个绑定绑定到程序中!我很欣赏可以维持对依赖属性的多个绑定,但是我该如何阻止这种情况发生呢?

我想到的两个考虑:

1) 当视图关闭时,用户控件没有被处理掉,如果可能的话,我应该把注意力转向确保它被处理掉吗?或者这对 WPF 的需求是否过大?

2) 我应该在模型基类中实现一个复制函数,而不是在每次打开视图时重新实例化模型,该函数将所有属性转移到与实际创建模型的另一个实例相反的位置上?

你怎么看?

谢谢

【问题讨论】:

    标签: c# wpf binding user-controls dependency-properties


    【解决方案1】:

    终于解决了这个问题,这个问题不仅限于我的用户控件,而是所有带有绑定的控件(包括标准的 WPF 控件)!当窗口被关闭时,绑定没有被终止,这个错误/问题/设计(也许它有一个用途 - 虽然我看不出那会是什么)对我来说似乎很奇怪。最初我确实认为这可能是我设置绑定的方式,但是对于普通文本框的绑定之一,我只是使用 Text="{Binding name}" - 没有定义其他配置可能导致这个问题!

    无论如何,我找到的解决方案是将 BindingOperations.ClearAllBindings(this) 添加到窗口关闭事件中。如果您遇到此问题,希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2015-05-04
      • 1970-01-01
      相关资源
      最近更新 更多