0

他のプログラミング言語 (つまり Java) では、以前に 1 つのクラスで Window を作成し、別のクラスが Window に追加するタブを返すようにしました。コントロールを更新するために 1 つのメイン クラスに渡されます。

ただし、私は .NET を初めて使用します。.NET を作成するMainWindow.xamlと、コントロールはそのクラスでのみ使用できることがわかります。これは仕様によるものですか、それとも別のクラスのコントロールにアクセスする方法はありますか?

コントロールを更新するために必要な情報を返すように、または必要な情報が既に存在するクラス内のコントロールにアクセスするように、関数を設計する方がよいでしょうか?

4

2 に答える 2

2

WPF はバインディングで動作するように設計されています。フォームに一連のデータ (顧客のリストなど) を提供し、コントロール (顧客のリストを含むコンボボックスなど) をフォームにバインドします。

データ自体は、フォーム内の関数によって操作されるか、できればコントローラー (分離されたロジックを含むクラス) によって操作されます。

WPF でのバインドに関する情報や、MVVM や MVC などの共通の UI パターンを調べれば、すぐに全体像を把握できます。

于 2013-07-25T13:00:57.000 に答える
1

実際、コードをコード ビハインドに配置することは悪い習慣です。

実際、WPF 用にプログラミングする最も一般的な方法は、MVC の変形であるMVVM パターンを使用することです。

MVVM パターンでは、ビューには、WPF のトリガーとアニメーションを使用して簡単に実行できない UI 操作を実行するための XAML または非常に限られた量のコードしか含まれていません。

ビューへのデータは、データ バインディングを通じて ViewModel クラスによって提供されます。データ バインディングはフレームワーク自体によって提供され、View または ViewModel が他方を認識することなく、データをやり取りします。

ViewModel のプロパティに対する変更は、ViewModel が標準インターフェイス (INotifyPropertyChanged) を介して通知するたびに、フレームワークによって View に渡されます。

他の MVC パターンとの主な違いは、ViewModel が基になるビジネス モデルまたはデータ モデルの上にある抽象化であり、特にビューの作業を容易にするために形成されていることです。

MVVM の標準実装はありません。そのための最も人気のある 2 つのフレームワークは、MVVM LightCaliburn.Micro (私の好み) です。MVVM Light はより軽量ですが、Caliburn.Micro はより独断的ですがより強力です。

補足として、MVVM の背後にあるアイデアは、Backbone.js や Knockout.js などのいくつかの Javascript フレームワークへの道を見つけました。

于 2013-07-25T13:04:20.303 に答える