2012-08-29 36 views
0

作爲上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

回答

0

我現在通過讓子ViewModel實現IEquatable而不是重寫Object.Equals來解決它。