2

ここで非常に基本的なことが明らかに欠けています。同様の質問を見つけましたが、どの回答からも自分が間違っていることを理解できませんでした。

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で使用する必要がありますが、結果は削除した場合と同じです-境界線のみが表示されます。

4

1 に答える 1