私は、特定のエンティティが現在のdatacontextの外で変更されていることを外部ソースから通知されている状況にあります。エンティティを見つけてリフレッシュを呼び出すことができます。DataContext RefreshとPropertyChanging&PropertyChangedイベント
MyDataContext.Refresh(RefreshMode.OverwriteCurrentValues、myEntity);
エンティティで変更されたプロパティが正しく更新されます。ただし、INotifyPropertyChanging INotifyPropertyChangedのどちらも、リフレッシュが発生したときに表示されないように見えます。これにより、UIに間違った情報が表示されてしまいます。
私はリフレッシュ()がエンティティ上で正しい通知を受け取るのに失敗し、変更通知イベントを発生させることはできませんが、同じことを達成する別の方法があると思いますか?
何か間違っていますか? Refreshよりも良い方法はありますか? リフレッシュが唯一のオプションであれば、誰でも回避できますか?
Rex、 Refresh()はコントローラー/「ほぼビジネスレイヤー」レベルで行われ、UIの近くにはありませんので、手動によるリフレッシュは問題ありません。 Refresh()によってEnitityデータが変更された場合、変更されたイベントが発生するはずです。実際にはそれが行われないという事実は、私にとっては見逃しのようです。 – Scott
@Scott多分それは見落としですが、それは私たちが変更できないコードですが、あなたのものはそうです。なぜあなたはRefresh()を呼び出してUIからそれにアタッチするときに呼び出すDataContextクラスにイベントを追加しないのですか?これはエンティティのイベントから取得するSoCに近いものです。 –