2011-05-10 13 views

答えて

-1

今のところ例はありませんが、役に立つかもしれないリンクを参照することができます。

UIElementは、視覚的な外観を持ち、Silverlightで基本入力を処理できるほとんどのオブジェクトの基本クラスです。

FrameworkElementは、Silverlightレイアウトに参加するオブジェクトの共通APIのフレームワークを提供します。また、Silverlightのデータバインディング、オブジェクトツリー、およびオブジェクトのライフタイムの機能領域に関連するAPIもFrameworkElementによって定義されています。

どのような追加機能がありますか? http://forums.silverlight.net/p/205863/482651.aspx

19

This is a good page for learning about WPF Architectureを参照してください。この回答はWPFにのみ適用されます。 UIElementセクションとFrameworkElementセクションをチェックし、時間があれば残りのセクションもチェックしてください。ここに2つのレベルが存在する理由を説明したリンク先のページからの引用があります。

この時点では、PresentationCoreアセンブリで実装されているWPFの「コア」機能が注目されています。 WPFを構築する際には、(MeasureとArrangeのレイアウトの契約のような)基本的部分と、Gridのような特定のレイアウトの実装のようなフレームワーク部分との間の明確な分離が望ましい結果でした。その目的は、外部の開発者が必要に応じて独自のフレームワークを作成できるように、スタック内での拡張性の低い点を提供することでした。

要するに、UIElementは(Visualに由来するので)自分自身を描画する方法を知っています。また、OnPreviewMouseDownOnMouseDownのような仮想メソッドと、MeasureArrangeを実装してlayout systemの一部を提供することによって、routed events systemを使用することもできます。

FrameworkElementは、UIElementで定義されている仮想メソッドの一部を実装することでレイアウトシステムを拡張します。レイアウトプロパティを設定する一貫した方法を提供します。 MarginプロパティとMinWidthプロパティです。さらに、スタイリングが可能で、data bindingに参加できます。

質問に答えて、追加の能力が必要な場合はFrameworkElementに追加してください。スタイル、バインディング、または使いやすいレイアウトシステムが必要です。次に、それらから派生します。それ以外の場合は、FrameworkElementを使用すると若干のオーバーヘッドが発生するため、UIElementから派生します。これらはPaddingのような便利な新Templatingような機能の層と特性を提供するよう

また、あなたは、(FrameworkElement由来)Controlクラスを見ている必要があります。

inheritance hierarchyに精通していることをお勧めします。他のクラスから派生させたいかもしれません(Visualよりチェーンを上回らないかもしれません)。

+0

私はUIElementから継承するとは考えていませんが、非常に広いシナリオです。 UIElementには欠けているDataContextプロパティが遅かれ早かれ必要になるため、ほとんどの場合、ユーザーはFrameworkElementから派生したいと考えています。 – Fazi

関連する問題