2009-08-26 7 views
3

WPFまたはSilverlightアプリケーションの設計について考えています。私はMVC(または別のそのようなデザインパターン)を使用するつもりですデータバインディングは、ビューをモデルに接続するのに適していますか?

私はこれまでデザインパターンの魔女を選択しました、私はモデル(またはプレゼンター)を見るために接続する必要があります - これを行う良い方法をデータバインドですか? (私はデータバインディングは、長期的には問題の多くを与え、その約束を果たしていないことを発見した。それは、WPFとSiverlightと同じであるWinFormsのアプリケーションとの過去には?)

答えて

1

私はあなたが取るお勧めしますModel-View ViewModel(MVVM)のパターンを見てください。ここで見てください非常に良いビデオです:Jason Dolinger on Model-View-ViewModel。 WPFの双方向データバインディングは非常に強力です。

+0

ありがとう、私は今このビデオを見ています。素晴らしいビデオ!ただし、データバインディングのコンパイル時間チェックがないため、プロパティの1つが名前変更された場合、すべてが破損します。 –

0

WPFでのデータバインディングは、Winformsで達成できるものをはるかに超えています。これは、プラットフォームに内在し、流行しています。データバインディングシステムを理解することなくWPFを理解できないと私は主張します。

確かに、落とし穴がないわけではありません。壊れたバインディングは、あなたが気に入っているほど明確ではないことがよくありますが、これらの問題を特定してフラグを立てるための改善が行われています。

2

はい、間違いなくデータバインディングを使用する必要があります。 WinFormsとASP.NETは常にデータバインドを一貫して維持可能な方法で取得するのに苦労していましたが、SilverlightとWPFは、データバインディングの喜びのために一から構築されています。

  • バインディングので、あなたのモデルの内と外のデータを移動するために面倒な配管コードを記述する必要はありません双方向です。 は実現不可能を実装してください。
  • コンバーターは、デフォルトが機能していない場合に、物事がバインドされる方法を処理するコードを書くことを可能にします。ブール値を可視性の設定、文字列のイメージ、整数から背景色などにバインドすることができます。空は限界です。
  • などのパターンMVVMは、WPFおよびSilverlightの豊富なデータバインディングサポートに最適です。 MVVMを使用すると、疎結合コードとデータバインディングの両方を最大限に活用できます。
  • 要素バインディングを使用すると、プロパティone要素を別の要素のプロパティにバインドできます。コンバーターと一緒に、スライダーコントロールの現在の位置をリストコントロールの選択されたインデックスにバインドするような印象的なパワーを与えます。両方。
  • ディープバインディングは、モデルのプロパティのプロパティにバインドできることを意味します。あなたはいつもそうすべきではありませんが、そうすることができます。
  • バインドはほぼダイナミック -nessで魔法です。モデルが同じバウンドプロパティをサポートし続ける限り、モデルの静的タイプが変更されてもバインディングは引き続き機能します。バインドも夢中ですフレキシブル。コレクション、インターフェイス、複雑なオブジェクト、(ほとんど)好きなものにバインドすることができます。
  • DataContextsは、ページ、コントロール、またはコンテナレベルでデータバインディングを設定するために使用できます。コンテナの子は、同じデータコンテキストを継承します。これにより、ページレベルでバインドした後、残りのページにバインディングパスを使用できます。
1

WPFまたはAdobe FlexまたはWinformsであれば、データバインディングはアプリケーションが複雑になると常に問題を引き起こします。私は簡単なデバッグのためにデータバインディングを避けることを好むでしょう。しかし、データバインディングはWPFの周りを走り回っています。 XAMLでデータバインディングを行うと、開発者からの制御がなくなります。

私はコード内のデータバインディングを維持すると、デバッグがずっと簡単だと思います。

データバインディングのないMVVMを想像してみてください。テクノロジーを活用したデザインパターンは優れていますが、特定の機能に完全に依存するデザインは災害です。

関連する問題