ここで非常に基本的なことが明らかに欠けています。同様の質問を見つけましたが、どの回答からも自分が間違っていることを理解できませんでした。
ControlTemplate を設定すると、DataTemplate が取得されません。
私の問題の非常に簡単な例を作成しました:
<Window x:Class="WpfTesterProject.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTesterProject"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<DataTemplate DataType="{x:Type local:Person}">
<StackPanel>
<TextBlock Text="{Binding FirstName}" />
<TextBlock Text="{Binding LastName}" />
</StackPanel>
</DataTemplate>
</Window.Resources>
<ContentControl Content="{Binding Content}">
<ContentControl.Template>
<ControlTemplate>
<Border BorderBrush="Blue" BorderThickness="2">
<ContentPresenter />
</Border>
</ControlTemplate>
</ContentControl.Template>
</ContentControl>
</Window>
私がやりたいのは、実行時にロードされたユーザー定義のデータ テンプレートを選択することですが、たとえば、ユーザー テンプレートが何であるか、またはテンプレートをまったく指定していない場合でも、すべての要素を境界線でラップしたいと考えています。 .
同様の質問から読んだことから<ContentPresenter />
、ControlTemplateで使用する必要がありますが、結果は削除した場合と同じです-境界線のみが表示されます。