Xaml TextBlock 设置圆角

Posted

技术标签:

【中文标题】Xaml TextBlock 设置圆角【英文标题】:Xaml TextBlock set round corner 【发布时间】:2013-08-23 08:29:32 【问题描述】:

我正在尝试在xaml 中设置TextBlock 的圆角。但是没有这样的属性。

<Grid x:Name="grdDis" Grid.Row="1">
        <TextBlock Text="Description" TextWrapping="Wrap" HorizontalAlignment="Left" VerticalAlignment="Top" Name="txtDescription" Margin="18,10,0,0" Height="128" Width="445"/>
</Grid>

如何设置 TextBlock 的圆角。还要设置TextBlock的背景色。

【问题讨论】:

【参考方案1】:

使用Border:

    <Border Margin="5" Padding="5" BorderThickness="1" BorderBrush="Red" Background="AntiqueWhite" CornerRadius="10">
        <TextBlock Text="Lorem ipsum"/>
    </Border>

【讨论】:

...当 TextBlock 具有与边框背景颜色不同的背景颜色(不透明)时会发生什么?在这种情况下,我认为 TextBlock 角不会显示为圆角...【参考方案2】:

为此使用 Border 元素作为 textBlock 的父元素 一样,

 <Border BorderThickness="1" BorderBrush="Black" Background="Green" CornerRadius="5">
    <TextBlock Text="Description"/>
</Border>

你已经明白了。 :)

【讨论】:

正如 Dennis 所说,当 TextBlock 具有不同的背景颜色(不透明)与边框背景颜色不同时会发生什么?在这种情况下,我认为 TextBlock 角不会显示为圆形。那么在这种情况下,你是如何面对这个问题的呢?【参考方案3】:

TextBlock 没有这样的属性,但是您可以通过将Rectangle 的宽度和高度绑定到Textblock 的宽度和高度,使用 Rectangle 的 RadiusXRadiusY 属性来做到这一点。

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <TextBlock Name="textBlock" Padding="5,0" Text="This is my TextBlock" Height="30" Width="Auto" VerticalAlignment="Top"/>
        <Rectangle RadiusX="5" RadiusY="5" Width="Binding Width,ElementName=textBlock" Height="Binding Height,ElementName=textBlock" Stroke="White" StrokeThickness="3" VerticalAlignment="Top"/>
</Grid>

【讨论】:

以上是关于Xaml TextBlock 设置圆角的主要内容,如果未能解决你的问题,请参考以下文章

当背景颜色与边框背景颜色不同时,为 WPF TextBlock 设置左上角和右上角圆角不起作用

WPF怎样设置Textblock的行距

WPF:如何使空的TextBlock不占用空间?

使用背景色更改 TextBlock 前景色

TextBlock 中的 XAML 自定义文本

设计时 XAML 的默认值