1. ホーム
  2. .net

[解決済み】ContentControlとContentPresenterの違いは何ですか?

2022-04-10 05:01:12

質問

をどのような場合に使用するのかがわかりません。 ContentPresenter の代わりに ContentControl (逆も然り)。今のところ、私は ContentControl の中で、かなりの確率で DataTemplate s. どのような場合に ContentPresenter また、その理由は?

解決方法は?

ContentControl は、他の要素を含むコントロールの基本クラスであり、その中に Content - プロパティ(例えば Button ).

ContentPresenter は、コンテンツを表示するためにコントロール・テンプレートの内部で使用されます。

ContentControl を直接使用する場合(基本クラスとして使用されることになっている)、ContentPresenterを使用してコンテンツを表示するコントロールテンプレートを持ちます。

私の経験則です(すべてのケースに適用されるわけではありませんので、ご自身の判断でお願いします)。

  1. 内側 ControlTemplate 使用 ContentPresenter
  2. の外 ControlTemplate (を含む)。 DataTemplate と外部テンプレートは使用しないようにしてください。 ContentPresenter
  3. サブクラス ContentControl コンテンツをホストするカスタム "lookless" コントロールを作成していて、既存のコントロールのテンプレートを変更しても同じ結果が得られない場合(これは非常にまれなケースでしょう)。