2009-06-16 13 views
2

私は、INotifyPropertyChangedインターフェイスとTwoWay Databindingを使用して、SL2アプリケーションのいずれかのフォームにModel-View-ViewModel(MVVM)パターンを実装しています。Databindingを使用してMVVMパターンを実装する際に、Silverlightアプリケーションのパフォーマンスが低下しますか?

しかし、私はこのアプローチのおかげで、私のフォームがややゆっくりと動作すると感じます。

このアプローチを使用すると、このようなSL2アプリケーションでパフォーマンスが低下するかどうかを知りたいだけでした。

おかげで... スーディープ

+0

私も、データバインディングがSL2ではやや遅くなることに気付きました。私はどのような答えが得られるのか不思議です。 +1。 –

答えて

3

私はどんな減速に気づいていません。私たちはINotifyPropertyChanged ViewModelsに多くのバインディングを行い、UIは非常に応答性が高いようです。

確かに、データ・バインディングと直接データ・アクセスのためのヒットがありますが、そのヒットは非常に小さいので、データ・バインディングから得られるメリットは小さなヒットとなります。

覚えておくべきこと:データバインドがUIで行われています。そのレイヤーでは高輝度処理があまり行われていません。さらに、UIは別のスレッドでレンダリングされます。私の意見では、これら2つのものが一緒になって、非常に反応の良い経験をしています。

Erikはバリューコンバータを使用していますか?私は同じことを尋ねるだろう。もしそうなら、彼らは多くの仕事をしていますか? MVVMでの私の経験では、バリューコンバータはほとんど必要なくなりました。思考のためのちょっとした食べ物。

+0

はい、実際には、わずかなビジネスロジックに応じて、データ構造の値をUI上の適切な値に変換するために必要ないくつかのバリューコンバータがあります。しかし、imhoは、MVVMパターンの "ViewModel"部分のバリューコンバーターではありませんか? – Sudeep

+0

@ Sudeep:ほとんどの場合、MVVMではValueConvertersは必要ありません。たとえば、MVVMの前に、Visibilityプロパティをモデルオブジェクトのブール値にバインドし、Bool-Visibilityコンバータを使用することができます。 MVVMでは、VisibilityプロパティをViewModelから外し、XAMLのコンバータを取り除くだけです。 MVVMでValueConvertersのために残した唯一のケースは、ValueConverterをViewオブジェクトとの間で変換する必要がある場合です。そのため、MVVMを使用したViewの一部としてValueConvertersを考慮します。 –

+0

こんにちはブライアン、ご返信ありがとうございます。私があなたの回答から集めたように、ValueConvertersは理想的には、TwoWayバインディングモードがあり、ユーザーのアクションがModel内の適切なデータ値に変換されなければならないと理にかなっていますか? – Sudeep

2

私は、任意の減速を気づいていません。プリズム・リファレンス・インプリメンテーションは、他の多くのものの中でも高速であるようです。

実際、バインディングシステムは依存関係プロパティを使用します。アニメーションシステムと同じように。その理由の一部は、値がフレームワークによって迅速に更新できるということです。

バリューコンバータを使用していますか?

1

私たちはPrismで多くのMVVMを実行しており、パフォーマンスが低下していることに気づいていません。まさに逆のことですが、アプリは頻繁にローテクなWindows対応のものより速くデモします。

0

他の1回限りのバインディングが必要な双方向バインディングが必要な場所を確認します。

関連する問題