0


0

WPF:コントロールテンプレートを交換すると、パフォーマンスと効率が向上しますか?

WPFのパフォーマンスについて一般的な質問があります。 比較的単純なフォームアプリケーションがあります。 一部のチームメンバーは、基本的なコントロールのテンプレートを再設計すると、パフォーマンスと保守性が向上すると考えています。 1つの好ましい手法は、コントロールに対して複数のコントロールテンプレートを作成し、それらをトリガーと交換することです。 信念は、より小さなビジュアルツリーの方がパフォーマンスが高いということです。

たとえば、チェックボックステンプレートは2つのテンプレートになり、1つはチェックされ、もう1つはチェックされていません。


そして、未チェック(パス要素がないことに注意してください):


トリガーを使用してテキストブロック(テキストを選択できない)をテキストボックスと交換する、選択可能なテキストを含む読み取り専用テキストボックスの作成についても同様の議論があります。

これにより、かなりの程度パフォーマンスが本当に向上しますか? チェックボックスを使用すると、2つの異なるコントロールテンプレートの代わりに、チェックを表示/非表示するトリガーがほぼ同じになりますか?

私は本当に気にしませんが、それほど多くの利益のために追加された多くの複雑さがあるようです。 他の人の意見がどうだったか興味がありました。 客観的な経験に基づいている場合。 (いくつかのサンプルアプリをセットアップし、それらのパフォーマンスをテストするのに十分な気がしないことがわかります。 :) )

ありがとうございます。

1 Answer


1


これは、パフォーマンスについて説明しているhttp://blogs.msdn.com/b/visualstudio/archive/2010/03/02/wpf-in-visual-studio-2010-part-2-performance-tuning.aspx [ブログ投稿] Visual Studioに関する問題では、ビジュアルツリーを単純化することはあまり検討していなかったと述べています。 あなたの例では、外観を変更するには両方の変更が必要なので、チェックボックスに2つのテンプレートがあると、保守性が向上するのではなく、妨げになると思います。 また、クリック時にテンプレートを切り替えると、要素の可視性を調整するよりも遅くなる可能性があります。

全体的なパフォーマンスに関しては、エフェクト、VisualBrushesなどにもっと注意を払いますが、読み取り専用のテキストボックスの状況が多くの要素を持つItemControlにあり、ほとんどが無効になっている場合は、多くのテンプレート(ItemTemplates)を単純化する価値がありますそれをする傾向があります。 その投稿で言及されたものを含め、WPFのパフォーマンスに関するリソースはかなりあります。