0

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

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

我想到了两个考虑:

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

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

你怎么看?

谢谢

4

1 回答 1

0

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

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

于 2013-10-07T12:13:44.367 回答