作爲上http://www.lhotka.net/weblog/DataRefreshInWPF.aspxWPF不重新綁定如果新的datacontext equals()方法以前的datacontext
甲WPF控制說明有時不能重新綁定到新的datacontext。特別是在使用實現Object.Equals
的視圖模型來查看viewmodels是否在邏輯上相等時。這裏的問題是,如果控件在邏輯上與前一個相同,則該控件不會重新綁定到新的數據上下文。這會導致控件變得柔軟,它們不會綁定到新的視圖模型。
我通過首先將DataContext
設置爲new object()
來繞過這個問題。這確保控件重新綁定到新的數據上下文。但是,當視圖模型包含實現Object.Equals
的另一個視圖模型時,這不起作用。使用DataTemplate
綁定到該視圖模型的視圖將不會重新綁定。我該如何解決這個問題?
顯然WPF數據綁定應該使用ReferenceEquals
代替Equals
..
更新:我解決它現在由具有副的ViewModels實施IEquatable<T>
,而不是覆蓋Object.Equals
。