WPF - 带加权文本的StringFormat

时间:2016-11-03 16:40:15

标签: c# wpf string-formatting

我有一个关于WPF stringformat的问题。

我想将一个字符串绑定到TextBlock stringformat,目前我的内容类似于以下内容:

<TextBlock>
    <TextBlock.Text>
        <Binding StringFormat="{}Text: {0}" Path="text"/>
    </TextBlock.Text>
</TextBlock>

我想要做的是将字符串格式化为如下所示: 文字:文字

或者换句话说,我希望将结果字符串的第一部分加粗。在我对该问题的解决方案的研究中,我发现了一个类似的问题StringFormat with Font Weight。但是,我对这种方法并不满意,大多数建议都反映了我的问题。

我想知道这是否是唯一的方法。我对这个解决方案不太满意,因为我认为它会使XML变得更加难以阅读。

授予我对WPF整体的新手,所以如果这是我可以接受的方式....我只是想知道这是否是解决这个简单问题的最好办法。

1 个答案:

答案 0 :(得分:2)

我只有一个字:Run

<TextBlock>
    <Run FontWeight="Bold"
         Text="Text: " />
    <Run Text="{Binding text}" />
</TextBlock>

我应该在回答之前完整地阅读这个问题;再说一次,你不应该只是在没有添加细节的情况下链接另一个页面!

从我的头脑中,只有两种解决方案可以进行标记格式化<Run><Span>

<Span><Bold><Italic><Underline>有一些有用的缩写,但这些缩写不支持绑定。
<Run>冗长,但支持绑定。

在您的情况下,最好的&#39;解决方案就像:

<TextBlock>
    <Bold>Text: </Bold><Run Text="{Binding text}"/>
</TextBlock>

对于旁注,SpanRun类似,但可以包含其他元素(运行,跨度,文本)。

有关详细信息,请see also