正如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
来解决它。
答案 0 :(得分:0)
我现在通过让子ViewModel实现IEquatable而不是重写Object.Equals来解决它。