如果新的datacontext Equals()以前的datacontext,WPF不会重新绑定

时间:2012-08-29 10:09:07

标签: wpf c#-4.0 data-binding

正如http://www.lhotka.net/weblog/DataRefreshInWPF.aspx

所述

WPF控件有时不会重新绑定到新的datacontext。特别是在使用实现Object.Equals的视图模型时,查看视图模型在逻辑上是否相等。这里的问题是如果控件在逻辑上等于前一个,则不会重新绑定到新的datacontext。这会导致控件变得跛行,它们不会绑定到新的viewmodel。

我首先将DataContext设置为new object(),从而规避了这一点。这可以确保控件重新绑定到新的datacontext。但是,当viewmodel包含另一个实现Object.Equals的viewmodel时,这不起作用。使用DataTemplate绑定到该视图模型的视图不会重新绑定。我该如何解决这个问题?

显然,WPF数据绑定应该使用ReferenceEquals而不是Equals ..

更新:我现在通过让子ViewModel实现IEquatable<T>而不是覆盖Object.Equals来解决它。

1 个答案:

答案 0 :(得分:0)

我现在通过让子ViewModel实现IEquatable而不是重写Object.Equals来解决它。