Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF在控件上同时设置DataTemplate和ControlTemplate不起作用_Wpf_Xaml - Fatal编程技术网

WPF在控件上同时设置DataTemplate和ControlTemplate不起作用

WPF在控件上同时设置DataTemplate和ControlTemplate不起作用,wpf,xaml,Wpf,Xaml,很明显,我在这里遗漏了一些非常基本的东西。我发现了类似的问题,但从没有一个答案中我能够理解我做错了什么 当我设置ControlTemplate时,我的DataTemplate不会被拾取 我为我的问题创建了一个非常简单的示例: <Window x:Class="WpfTesterProject.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="

很明显,我在这里遗漏了一些非常基本的东西。我发现了类似的问题,但从没有一个答案中我能够理解我做错了什么

当我设置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>

我想做的是选择在运行时加载的用户定义的数据模板,但我还想,例如,在边框中包装每个元素,无论用户模板是什么,或者即使他根本没有指定任何模板


从我从类似问题中读到的内容来看,我必须在ControlTemplate中使用
,但结果与删除它的结果相同-只显示边框。

我复制了您的应用程序。问题似乎出在
ControlTemplate
TargetType
属性中:

<ContentControl Content="{Binding}">
    <ContentControl.Template>
        <ControlTemplate TargetType="ContentControl">
            <Border BorderBrush="Blue" BorderThickness="2">
                <ContentPresenter />
            </Border>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>

我复制了您的应用程序。问题似乎出在
ControlTemplate
TargetType
属性中:

<ContentControl Content="{Binding}">
    <ContentControl.Template>
        <ControlTemplate TargetType="ContentControl">
            <Border BorderBrush="Blue" BorderThickness="2">
                <ContentPresenter />
            </Border>
        </ControlTemplate>
    </ContentControl.Template>
</ContentControl>


能否显示后面的代码?窗口的数据上下文是什么?没有代码隐藏。DataContext是
new{Content=any_object_可能的}
您能显示后面的代码吗?窗口的数据上下文是什么?没有代码隐藏。DataContext是
new{Content=any\u object\u mable}
噢,就是这样?难怪我在类似的问题上找不到解决办法。没有人会问这样愚蠢的问题。Thanx:-)属性是否应该设置不是很明显;)哦,就是这样?难怪我在类似的问题上找不到解决办法。没有人会问这样愚蠢的问题。Thanx:-)属性是否应该设置不是很明显;)