带有TextBlock的XAML数据模板样式边框

本文关键字:样式 边框 数据 TextBlock XAML 带有 | 更新日期: 2023-09-27 18:08:29

我不确定这是否可能,但我想看看是否有人知道。我想写一个样式的数据模板,这是一个边界与TextBlock里面。理想情况下,我希望所有的东西都是一种风格。现在我已经分别为Border和TextBlock设置了样式。

这是我的数据模板:

<DataTemplate DataType="{x:Type local:MyObject}">
    <Border Style="{StaticResource BorderStyle}">
        <TextBlock Style="{StaticResource TextBlockStyle}"/>
    </Border>
</DataTemplate>

边框样式

<Style x:Key="BorderStyle" TargetType="Border">
    <Setter Property="BorderBrush" Value="Black"/>
    <Setter Property="BorderThickness" Value="1"/>
    <Setter Property="CornerRadius" Value="90"/>
    <Setter Property="Width" Value="45"/>
    <Setter Property="Height" Value="45"/>
    <Setter Property="Background" Value="White"/>
    <Setter Property="Opacity" Value=".75"/>
</Style>

TextBlock的样式

<Style x:Key="TextBlockStyle" TargetType="TextBlock">
    <Setter Property="Text" Value="{Binding Name}"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="HorizontalAlignment" Value="Center"/>
</Style>

Code Complete给了我额外的属性的边界,我认为会工作,但他们似乎没有工作。

<Style x:Key="BorderStyle" TargetType="Border">
    ...
    <Setter Property="TextBlock.VerticalAlignment" Value="Center"/>
    ...
</Style>

带有TextBlock的XAML数据模板样式边框

您可以创建单个DataTemplate并将其用作应用程序中的静态资源。我是用下面提到的方法做到的。

<Window.Resources>
    <DataTemplate x:Key="borderedTemplate">
        <Border BorderBrush="Black" BorderThickness="1" CornerRadius="90" Width="45" Height="45" Background="White" Opacity=".75">
            <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding Name}">
            </TextBlock>
        </Border>
    </DataTemplate>
</Window.Resources>

定义模板后,我们可以使用borderedTemplate键来使用该模板。这个特殊的模板,它在TextBlock周围生成了一个漂亮的圆形边框