2011-08-11 8 views
0

私は、10000のWPFコントロールが非常に大きくスタイルされており、そのスタイルがほぼ90%同一であるとしましょう。wpfでのスタイル継承のパフォーマンス

私は不思議に思っています。パフォーマンスを向上させるにはどうすればよいでしょうか?

  1. 10000ユニークなスタイル
  2. はこのスタイルを継承し、私は2番目の思考せずに、第2のオプションのために行っていた残りの10%

を追加する一般的な90%+ 10000のスタイルを含む1つのスタイルを持ってい(可読性に関する考慮事項)、しかし、私はパフォーマンスの点で非常に悪い考えであることを示す傾向があるいくつかの基本的なテストを行いました。だから私のテストはバグか、スタイル継承は本当にperfsを下げますか?

編集:大丈夫です、これは十分に説明されていないことがほとんどでした。私は少し詳しくしようとします:

基本的に、私の関心はDataGridにあります。 私のセルは大幅にカスタマイズ可能です(基本的には、セル内のすべてのスタイルプロパティを変更できます)。また、DataGridではこれを簡単に行うことができません(DataViewのdatacontextがCellViewではなくrowViewになっています)。私が何をするために追加するかを達成するには本当に醜いものです(詳細を知りたい場合はthereを参照してください)。基本的には、各セルのコードビハインドでCellStyleを設定します。

これらのスタイルは共通点が多いので、私は共通のスタイルを設定し、アプリの静的リソースを入れて、この共通のスタイルですべてのセルスタイルをベースにしました。 (このスタイルはイベントリスナーをホストしていましたが、cellStylesはフォアグラウンドColor、FontSizeなどのプロパティにバインディングを追加しました...)

私はこれを試したときに、 今、私が当時のこのアプリの側面を実際にテストしていなかったので、コードの一部がひどく書かれていて、perfのドロップが「basedon」スタイル。とにかく、私は転がして、私がやっていたテストを終えました。

今、私はコードを整理していますが、これについてもう一度説明します。 私のスタイルの構造をすべて変更する手間が出る前に、テスト目的のためだけに問題があれば、まず質問してみてください...

ご協力いただきありがとうございます!

+1

StaticResourceまたはDynamicResourceとしてアクセスしますか? –

+1

どのようなテストをしましたか?あなたはコードを投稿できますか? – Rachel

+0

私はそれがリソースをどのようにロードしているかによって異なると思います。 ResourceDictionaryオブジェクトを使用していますか? –

答えて

2

私は間違いなく後者と言います。共通性を沸騰させて「継承可能な」スタイルにすることは、おそらく最高でしょう。少なくとも、実行時にこれらのスタイルをロードすることは、ディスク時間に関してより速くなります。たとえ各サブスタイルに複数のセッターがあっても、非常に多くの場合、同じコントロールに相当する10,000個の完全に指定されたスタイルが読み込み時間が短縮されます。他の10%の差別化があるにもかかわらず、それらの違いをスタイルのセットにも沸かせる方法がありますか?あなたのスタイルに基づいていたスタイルに基づいてスタイルを持つことができます

...さらに

、あなたはこれらの項目にトリガをオフにプッシュすることができますいくつかありますか?すべてのスタイル設定を10000通りに組み合わせることができます。それらのうちのいくつかをいくつかのトリガーに移すことができれば、必要とするスタイルの選択肢の数が減るようです。

+1

Styleception? = o –

+3

確かに。私たちはもっと深く進む必要があります。非常に深いスタイルのセッターをインプラント... – CodeWarrior

関連する問題