私はちょうど WPF の速度に達しており、再利用可能な WPF コントロールを作成したいと考えています。
Visual Studio でプロジェクトを作成するためのオプションを見ると、「WPF ユーザー コントロール ライブラリ」と「WPF カスタム コントロール ライブラリ」が表示されます。それらの違いが何であるかは私には不明であり、私のGoogle検索では適切な説明が見つかりませんでした.
それらの違いを理解し、理想的には、どちらを使用するかの例をいくつか見てみたいと思います。
私はちょうど WPF の速度に達しており、再利用可能な WPF コントロールを作成したいと考えています。
Visual Studio でプロジェクトを作成するためのオプションを見ると、「WPF ユーザー コントロール ライブラリ」と「WPF カスタム コントロール ライブラリ」が表示されます。それらの違いが何であるかは私には不明であり、私のGoogle検索では適切な説明が見つかりませんでした.
それらの違いを理解し、理想的には、どちらを使用するかの例をいくつか見てみたいと思います。
実際には、カスタム コントロールはコード レベルで実装するものですが、ユーザー コントロールには XAML を使用できます。カスタム コントロールは、WPF コントロールの基本クラスの 1 つを拡張し、コードを通じて追加機能を提供するため、追加されたすべてのロジックと表現をコード内に実装する必要があります。
ユーザー コントロールは、技術的には通常のコンテンツ コントロールであり、コードの一部で拡張できますが、通常はその中に他のコントロールを配置することで拡張されます。Kent が述べたように、UserControl は他のコントロールの集合体です。これにより、ユーザー コントロールで実行できることが大幅に制限されます。使いやすいですが、フル カスタム コントロールよりも制限があります。
これらのコントロールには、ランタイムの観点からはわずかな違いがあります。アプリケーションをビルドして UserControl を配置すると、コントロール ツリーの中に具体的な UserControl テンプレートが含まれます。したがって、特殊なボタンの不十分な例を考えてみます。ユーザー コントロールを使用している場合は、<UserControl>
要素内にボタンを追加します。カスタム コントロールを使用する場合、ほとんどの場合、ボタンからコントロール自体を派生させます。違いは、論理ツリーに表示されます。
カスタム コントロールは次のような論理ツリーを提供しますが、
UserControl は、次の論理ツリーを提供します。
したがって、最終的に UserControl は、少し拡張してコンテンツを事前定義できる通常の ContentControl にすぎません。カスタム コントロールは、XAML の利点を得る代わりに、すべてのロジックと対話をコード内で実行する必要があるため、実装の容易さを犠牲にしてより大きな柔軟性を提供します。
結局のところ、Visual Studio テンプレートにそれほど大きな違いはないと思います。ほとんどの場合、Visual Studio カスタム コントロールは空のカスタム コントロールを含むプロジェクトを作成するだけですが、ユーザー コントロール プロジェクトは空のユーザー コントロールを含むプロジェクトです。後で任意の種類の項目をプロジェクトに追加できます。
アップデート
カスタム コントロールとユーザー コントロールをいつ使用するかについての私の意見は、ユーザー コントロールを使用して何かを行うことができ、論理ツリー内の余分なコントロール要素が気にならない場合は、ユーザー コントロールを使用する方がはるかに簡単であるということです。作成して維持します。ユーザー コントロールを使用しない理由がある場合にのみ、カスタム コントロールを使用してください。
AControl
は、スキニング可能 (テンプレート化可能) な動作を表しますが、一般に、aはアプリケーションに固有の s のUserControl
上位レベルの集合体です。Control
詳細については、こちらをご覧ください。