Xml WPF-带内容的边框模板

Xml WPF-带内容的边框模板,xml,wpf,xaml,border,contentcontrol,Xml,Wpf,Xaml,Border,Contentcontrol,假设我有以下控件模板: <ControlTemplate x:Key="Test"> <Grid> <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" Width="33" Height="33" CornerRadius="3"/> <ContentControl Content="{TemplateBinding Pro

假设我有以下控件模板:

<ControlTemplate x:Key="Test">
    <Grid>
        <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="1" Width="33" Height="33" CornerRadius="3"/>
        <ContentControl Content="{TemplateBinding Property=ContentControl.Content}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </Grid>
</ControlTemplate>

如何更改wpf中控件的内容?我试过类似的方法

<Control Template="{StaticResource Test}" BorderBrush="Black" Content="aa"></Control>


但当我这样做时,它会告诉我属性内容未被识别或未找到。

因为控件不是从ContentControl派生的,所以它不会公开内容属性。查看更多信息。

您需要单独使用
ContentControl
来执行所需操作。。。需要明确的是,
ContentControl
元素与
Control
元素无关。它用于显示数据对象,并可选地对对象应用
DataTemplate
DataTemplate
是您可以自定义的部分:

<ContentControl Content="{Binding SomeDataObject}" 
    ContentTemplate="{StaticResource SomeDataObjectTemplate}" />
您唯一的其他选择是声明一个
UserControl
,并将标记的某些部分公开为
dependencProperty
s,您可以从控件外部将数据绑定到这些部分:

<Prefix:YourUserControl CustomContent="{Binding SomeDataObject}" />
<ContentControl Content="{Binding CustomContent, 
    RelativeSource={RelativeSource AncestorType={x:Type Local:YourUserControl }}}" />

控件内部:

<Prefix:YourUserControl CustomContent="{Binding SomeDataObject}" />
<ContentControl Content="{Binding CustomContent, 
    RelativeSource={RelativeSource AncestorType={x:Type Local:YourUserControl }}}" />

控件是基类,没有内容属性。