WPF - 包含内容的边框模板

use*_*369 4 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 Property=ContentControl.Content}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </Grid>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)

如何更改wpf中的控件内容?我尝试过类似的东西

<Control Template="{StaticResource Test}" BorderBrush="Black" Content="aa"></Control>
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,它说我无法识别或找不到属性内容。

She*_*dan 5

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

<ContentControl Content="{Binding SomeDataObject}" 
    ContentTemplate="{StaticResource SomeDataObjectTemplate}" />
Run Code Online (Sandbox Code Playgroud)

...

在一些Resources集合中:

<DataTemplate x:Key="SomeDataObjectTemplate" DataType="{x:Type Prefix:SomeDataObject}">
    <Grid>
        <Border BorderBrush="Black" BorderThickness="1" CornerRadius="3" />
        <TextBlock Text="{Binding}" />
    </Grid>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

您唯一的其他选择是声明 aUserControl并将标记的某些部分公开为DependencyPropertys ,您可以从控件外部进行数据绑定:

<Prefix:YourUserControl CustomContent="{Binding SomeDataObject}" />
Run Code Online (Sandbox Code Playgroud)

控件内部:

<ContentControl Content="{Binding CustomContent, 
    RelativeSource={RelativeSource AncestorType={x:Type Local:YourUserControl }}}" />
Run Code Online (Sandbox Code Playgroud)