http://www.lhotka.net/weblog/DataRefreshInWPF.aspxで説明されているように
WPF コントロールが新しいデータ コンテキストに再バインドされないことがあります。Object.Equals
具体的には、ビューモデルが論理的に等しいかどうかを確認するために実装するビューモデルを使用する場合。ここでの問題は、論理的に前のデータ コンテキストと等しい場合、コントロールが新しいデータ コンテキストに再バインドされないことです。これにより、コントロールがぐったりし、新しいビューモデルにバインドされなくなります。
最初に を に設定して、これを回避しDataContext
ましたnew object()
。これにより、コントロールが新しいデータ コンテキストに再バインドされます。ただし、ビューモデルに を実装する別のビューモデルが含まれている場合、これは機能しませんObject.Equals
。を使用してそのビューモデルにバインドされたビューは、再DataTemplate
バインドされません。どうすればこれを回避できますか?
明らかに、WPF データバインディングは..ReferenceEquals
の代わりに使用する必要があります。Equals
更新:IEquatable<T>
オーバーライドする代わりにサブ ViewModels を実装することで、今のところ解決しましたObject.Equals
。