如何在WPF中定义文本块背景矩形周围的笔划?

时间:2009-12-06 07:59:03

标签: c# wpf xaml text layout

我想将一些文本放在一个矩形内,并在这个矩形周围用笔划(就像对象“矩形”本身的属性“Stroke”)。但我没有设法找到对象“Textblock”的属性,它定义了这样一个笔画。

2 个答案:

答案 0 :(得分:5)

您可以将TextBlock置于Border内,并设置Border的属性以在文字周围绘制矩形。

答案 1 :(得分:0)

每个TextBlock元素都包含一个或多个子Inline元素。有一种内联(InlineUIContainer)支持宿主UIElement:基本上,这意味着您可以在TextBlock中宿主任意UI元素。翻转@GraemeF's answer,可以在TextBlock内部 中托管一个Border元素,如下所示:

<Window x:Class="StackOverflowWpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <TextBlock FontSize="24" Padding="20">
        <Run>Hello</Run>
        <InlineUIContainer>
            <Border BorderBrush="Black" BorderThickness="1" Padding="4" Margin="0,0,0,-11">
                <TextBlock Text="Boxed" />
            </Border>
        </InlineUIContainer>
        <Run>World</Run>
    </TextBlock>

</Window>

这看起来像这样:

Bordered text within a TextBlock

您必须尝试在Border元素上使用Margin才能使文本基线匹配,但除此之外,该技术似乎效果很好。