これらはプロジェクトに追加することができる3つの異なるものですが、私がその違いを理解しているかどうかはわかりません。たとえば、コンポーネントツールボックスでは、Form
。それぞれの一般的な使用シナリオは何ですか?違いはなんですか?
ユーザーコントロール、カスタムコントロール、コンポーネントの主な違いは、継承ツリーのさまざまなレベルから継承されることです。
MyComponent
|-> Component
MyCustomControl
|-> Control
|-> Component
MyUserControl
|-> ContainerControl
|-> ScrollableControl
|-> Control
|-> Component
したがって、要するに、異なるオプションを使用して異なる量の配線済み機能を得ることができます。
いつさまざまなオプションを使用しますか? (これらは考えや意見であり、真実ではありません)
疎結合のコントロールとコードとUI
コントロールから派生する
ResourceDictionaryでUIを定義する
UIはスキン可能です
動的なレイアウトをしている
異なるプロジェクトでUIを変更することができます
完全なツールボックスをサポートしています
単一のコントロールを定義する
より柔軟な
==============
密接に結合された制御コードとUI
UserControlから派生
UIを通常のXAMLとして定義する
子コントロールはスキン可能です
静的レイアウトを持っている
UIは固定されており、異なるプロジェクトでは異なる外観を持つことはできません
ツールボックスに追加できません
一連のコントロールを定義する
カスタムコントロールのような柔軟性はあまりありません
Can't be added to the toolbox
- Jagoda Sokół
Fredrikが言っていることに加えて、一般的にコンポーネントとカスタムコントロールはプロジェクト間で再利用を計画するときに使用されます。 1つのプロジェクトでのみ使用する場合は、ユーザーコントロールを使用します。
私は最後のステートメントが私の意見では正しくないと信じています。 私は、さまざまな理由でユーザーコントロールを作成します。
主な理由は、もし私が複数のコントロール 一緒にグループ化される。
最初にクラスライブラリを作成してから、ユーザーコントロールを追加します。 今私は、ユーザーコントロールの仕組みの背後にあるロジックの一部を変更する必要がある場合、私は非常に簡単に行うことができます。また、このクラスライブラリは複数回使用できます。
また、同じ高級な図書館の中で、私は自分のユーザーコントロールのいずれかに共有して使用できる複数のクラスを持つことができます。
これが私がユーザーコントロールを使用する主な理由です。 また、ユーザーコントロールやクラスライブラリを変更した場合。 一度あなたが仕事を構築する。 dllはbinフォルダー内の日付を動的に更新します。
だから私は別のプロジェクトでこれを参照している場合 これらの変更は新しいプロジェクトにも反映されます。
また、フォームと同じペイントルーチンや、フォームにロードしたものは使用しません。
したがって、ユーザーコントロールにより、非常にモジュラー化することができます そして、私は、クラスライブラリの基本クラスを共有する複数のユーザーコントロールを持つことができます... したがって、ユーザーコントロールの目的は、1つのプロジェクトのためだけではありません。その点で制限はありません。 ジェフ
彼らの主な違いは、ユーザーコントロールは拡張子が.ascxのページファイルです。 単一のアプリケーションまたはプロジェクト内で使用されますが、カスタムコントロールは複数のアプリケーションで使用できるアセンブリ(dllファイル)です。
UserControl
実際には "複合"コントロール(他のコントロールから作られたコントロール)ですが、カスタムコントロールは実際にはユーザーが設計したコントロールです。 - Dave CousineauUserControl
? - Nick Alexeev