8

BorderコントロールまたはRectangleコントロールのいずれかが私のニーズを満たす場合があります。例としては、ControlTemplate を実装していて、既にレイヤ化手法 (つまり、コントロールをグリッドに積み重ねる) を適用しており、コーナーに別の RadiusX または RadiusY を適用する必要がない場合があります。

ただし、そのような ControlTemplates を設計する場合、Borders または Rectangles のような複数のレイヤーを使用することがあります。そのため、どのコントロールがアプリケーションのパフォーマンスに与える影響が最も少ないかを認識しておく必要があることに気付きました。FrameworkElement の後で継承階層が分岐していることがわかります。また、Border が Decorator コントロールであることにも気付きました (Decorator を使用したことがありますが、他のコントロールと比較してどのように機能するかはわかりません)。誰かが光を当てることができますか

1) 特定の継承階層に基づいて、コントロールのパフォーマンスへの影響について一般的な結論を導き出すにはどうすればよいでしょうか?

2) Border などのデコレータは、他のコントロールと比較してどのように機能しますか?

3) 具体的には、Border と Rectangle について、どちらが優れたパフォーマンスを発揮しますか?

4

1 に答える 1

2

私の経験では、WPF の境界線は少し軽量ですが、さらに重要なことは、画面上で同じようにレンダリングされることが多いにもかかわらず、多少異なるニーズを表していることです。長方形をその一部として含むものを作成している場合、通常は長方形が適切です。画面上の何かを強調したい場合、またはオブジェクトが別の状態であることを示したい場合は、境界線を使用します。その境界線の色、太さ、または可視性をモデルの状態プロパティ (またはあなたの場合に適用されるもの) にバインドすることがよくありますが、本質的な違いは、境界線がオブジェクトの一部ではないことです。それは、そのオブジェクトを目立たせる、または見えるようにする方法です。

または、TextBox のような既に構成されたもので、その周りに色を追加している場合、通常は境界線になります。

この違いを念頭に置いておくと、XAML ツリーが理解しやすくなり、後で保守しやすいコードが得られます。

于 2014-04-14T02:07:21.723 に答える