189

私はちょうど WPF の速度に達しており、再利用可能な WPF コントロールを作成したいと考えています。

Visual Studio でプロジェクトを作成するためのオプションを見ると、「WPF ユーザー コントロール ライブラリ」と「WPF カスタム コントロール ライブラリ」が表示されます。それらの違いが何であるかは私には不明であり、私のGoogle検索では適切な説明が見つかりませんでした.

それらの違いを理解し、理想的には、どちらを使用するかの例をいくつか見てみたいと思います。

4

3 に答える 3

128

実際には、カスタム コントロールはコード レベルで実装するものですが、ユーザー コントロールには XAML を使用できます。カスタム コントロールは、WPF コントロールの基本クラスの 1 つを拡張し、コードを通じて追加機能を提供するため、追加されたすべてのロジックと表現をコード内に実装する必要があります。

ユーザー コントロールは、技術的には通常のコンテンツ コントロールであり、コードの一部で拡張できますが、通常はその中に他のコントロールを配置することで拡張されます。Kent が述べたように、UserControl は他のコントロールの集合体です。これにより、ユーザー コントロールで実行できることが大幅に制限されます。使いやすいですが、フル カスタム コントロールよりも制限があります。

これらのコントロールには、ランタイムの観点からはわずかな違いがあります。アプリケーションをビルドして UserControl を配置すると、コントロール ツリーの中に具体的な UserControl テンプレートが含まれます。したがって、特殊なボタンの不十分な例を考えてみます。ユーザー コントロールを使用している場合は、<UserControl>要素内にボタンを追加します。カスタム コントロールを使用する場合、ほとんどの場合、ボタンからコントロール自体を派生させます。違いは、論理ツリーに表示されます。

カスタム コントロールは次のような論理ツリーを提供しますが、

    • カスタムボタン

UserControl は、次の論理ツリーを提供します。

    • カスタム ボタン ユーザー コントロール
      • ボタン

したがって、最終的に UserControl は、少し拡張してコンテンツを事前定義できる通常の ContentControl にすぎません。カスタム コントロールは、XAML の利点を得る代わりに、すべてのロジックと対話をコード内で実行する必要があるため、実装の容易さを犠牲にしてより大きな柔軟性を提供します。

結局のところ、Visual Studio テンプレートにそれほど大きな違いはないと思います。ほとんどの場合、Visual Studio カスタム コントロールは空のカスタム コントロールを含むプロジェクトを作成するだけですが、ユーザー コントロール プロジェクトは空のユーザー コントロールを含むプロジェクトです。後で任意の種類の項目をプロジェクトに追加できます。

アップデート

カスタム コントロールとユーザー コントロールをいつ使用するかについての私の意見は、ユーザー コントロールを使用して何かを行うことができ、論理ツリー内の余分なコントロール要素が気にならない場合は、ユーザー コントロールを使用する方がはるかに簡単であるということです。作成して維持します。ユーザー コントロールを使用しない理由がある場合にのみ、カスタム コントロールを使用してください。

于 2009-04-30T16:26:39.937 に答える
25

AControlは、スキニング可能 (テンプレート化可能) な動作を表しますが、一般に、aはアプリケーションに固有の s のUserControl上位レベルの集合体です。Control

詳細については、こちらをご覧ください

于 2009-04-30T16:07:55.550 に答える