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