我有一个带有标签的组合框的用户控件,通过调试,我注意到每次打开包含用户控件的视图时,每个模型属性都比上一次有一个get请求!
每次打开视图时,我都会重新实例化该模型(出于不需要真正提及的原因),但是似乎正在发生的事情是保留了与该模型的任何先前副本的绑定,并且该模型似乎没有被正确处置,因为它仍然通过此绑定绑定到程序中!我赞赏可以保留对依赖项属性的多次绑定,但是如何阻止这种情况发生呢?
我想到了两个注意事项:
1)当关闭视图时,不会丢弃用户控件,如果可以的话,我是否应将注意力转向确保已丢弃它?还是这对WPF的需求而言是过大的?
2)我不必在每次打开视图时都重新实例化模型,而应该在模型基类中实现一个复制函数,该函数将所有属性转移到与实际创建模型的另一个实例相对的位置上吗?
你怎么认为?
谢谢
最后解决了这个问题,这个问题不仅限于我的用户控件,而是所有带有绑定的控件(包括标准WPF控件)!当窗口关闭时,绑定没有终止,这个错误/问题/设计(也许有用途-尽管我看不到那是什么)对我来说似乎很奇怪。最初我确实认为这可能是我设置绑定的方式,但是使用其中一个绑定到普通文本框,我只是使用Text =“ {Binding name}” -没有定义其他配置可能导致此问题!
无论如何,我发现的解决方案是将BindingOpertations.ClearAllBindings(this)添加到Windows关闭事件中。如果您遇到此问题,希望对您有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句