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カスタムコントロールは、カスタムコントロールが空のプロジェクトを作成するだけですが、ユーザーコントロールプロジェクトは、ユーザーコントロールが空のプロジェクトです。後でプロジェクトに任意の種類のアイテムを追加できます。
更新
そして、カスタムコントロールとユーザーコントロールをいつ使用するかについての私の意見は、ユーザーコントロールで何かを実行でき、論理ツリーの追加のコントロール要素が邪魔にならない場合は、ユーザーコントロールを使用する方がはるかに簡単であるためです。作成して維持します。カスタムコントロールは、ユーザーコントロールを使用しない理由がある場合にのみ使用してください。
A Control
はスキン可能(テンプレート化可能)ないくつかの動作を表しますが、a UserControl
は通常Control
、アプリケーションに固有のsのより高レベルの集約です。