用户控件累积依赖项属性绑定

时间:2013-10-04 14:37:43

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

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

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

我想到的两个考虑因素:

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

2)不是每次打开视图时重新实例化模型,我应该只在模型基类中实现一个复制函数,它传递所有属性而不是实际创建另一个模型实例?

你怎么看?

由于

1 个答案:

答案 0 :(得分:0)

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

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