我不确定这是否可行,但我想知道是否有人知道。我想为数据模板编写样式,该模板是一个带有TextBlock的Border。理想情况下,我希望将整个事物融入到一种风格中。现在我分别为Border和TextBlock设置了样式。
这是我的DataTemplate:
<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>
代码完成给了我边框的其他属性,我认为它可以工作,但它们似乎不起作用。
<Style x:Key="BorderStyle" TargetType="Border">
...
<Setter Property="TextBlock.VerticalAlignment" Value="Center"/>
...
</Style>
答案 0 :(得分:2)
您可以创建一个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
周围生成一个漂亮的圆形边框。