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

C# 用户控件累积依赖项属性绑定,c#,wpf,binding,user-controls,dependency-properties,C#,Wpf,Binding,User Controls,Dependency Properties,我有一个用户控件,它是一个带标签的组合框,通过调试,我注意到每次打开包含用户控件的视图时,对每个模型属性的get请求都比上次多一个 每次打开视图时,我都会重新实例化该模型(因为不需要提及的原因),但似乎发生的事情是,与该模型的任何以前副本的绑定都被保留,并且该模型似乎没有被正确处理,因为它仍然通过该绑定绑定到程序中!我知道依赖性属性的多个绑定是可以维持的,但是如何阻止这种情况发生呢 我考虑了两个因素: 1) 当视图关闭时,usercontrol没有被释放,如果可能的话,我是否应该将注意力转向确保

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

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

我考虑了两个因素:

1) 当视图关闭时,usercontrol没有被释放,如果可能的话,我是否应该将注意力转向确保它被释放?或者这是对WPF的过度需求

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

你觉得怎么样


感谢

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

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