複数の UI 要素をさまざまな状況でさまざまなタイミングで表示するカスタム WPF コントロールを作成しようとしているため、同じビジュアル ツリーで適切に作成することはできません。タイプ の各要素の依存関係プロパティを作成しましUIElement
た。これはうまくいきました。
スタイリングのコントロールに関しては、うまく機能しませんでした。カスタム プロパティを設定するコントロールのスタイルを定義できますが、スタイルは一度だけインスタンス化されます。したがって、カスタム コントロールの複数のインスタンスが同じスタイルを使用している場合、最後に定義されたインスタンスのみがビジュアル ツリーを取得します。これは、スタイルがUIElement
テンプレートを使用するのではなく直接設定するためであり、その中で定義されたツリーの複数のインスタンスを作成するのはテンプレート インフラストラクチャであるためだと理解しています ( https://stackoverflow.com/a/8702180/1453269を参照) 。
私の質問は、適用されるような方法で複数のテンプレートを取るコントロールを定義するにはどうすればよいですか? タイプ の依存オブジェクトを作成しようとしましDataTemplate
た。を使用しContentPresenter
てテンプレートを表示すると、DataTemplate の型名がテキストとして表示されるだけです。WPF の残りの部分と一貫性のある方法で、テンプレートの値を最初の依存関係プロパティに適用したいと考えています。WPF のテンプレート インフラストラクチャを活用する方法があると想定していましたが、その方法が見つかりません。