2

私は ASP.NET 開発者ですが、最近は WPF アプリケーションも開発しています。ASP.NET では、GridView のデータを更新する必要があるときはいつでもDataBind(). しかし、WPF での代替手段は何ですか? 回避策として、現在INotifyCollectionChangedデータを更新するために実装しています。

4

1 に答える 1

4

実装を回避策と考えるべきではありません。INotifyCollectionChangedこれは、実際には WPF の優れた方法です。

(代わりにSystem.ComponentModel.BindingListを設定できることに注意してください。このリストにバインドされている WPF コントロールは、リストが変更されると自動的に更新されます。)

では、WPFではオブザーバー パターンが使用されているのに、ASP.NET では明示的なデータ バインディングが標準的な方法であるのはなぜでしょうか? これは、2 つの環境の性質の違いによるものです。

ASP.NET は、Web ページの作成と設定がすべてです。Web ページ自体は段階的に更新されません。ユーザーがポストバックを実行すると、まったく新しい Web ページが再作成されます。このため、バッチ処理アプローチを採用するのが効率的です。つまり、すべてのデータをアセンブルしてから、「OK、データの準備ができました。今すぐコントロールに入力してください」と言います。

リッチ クライアント アプリケーションでは、ユーザー インターフェイス コントロールは 1 回作成されますが、基になるデータはコントロールの有効期間内に変更されます。明示的なデータ バインディングを採用した場合、データが変更されるたびに、どのコントロールを更新する必要があるかを判断し、それぞれに対して "DataBind" を呼び出します。それはメンテナンスの頭痛の種です。バインディングを認識できる唯一のコンポーネントがコントロール自体であることをお勧めします。データは「変更しました」と通知するだけで、コントロールは独自の裁量で更新できます。

于 2011-04-10T10:19:11.720 に答える