【问题标题】:WPF - StringFormat with weighted textWPF - 带有加权文本的 StringFormat
【发布时间】:2016-11-03 16:40:15
【问题描述】:

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

我想用stringformat 将字符串绑定到TextBlock,目前我有类似以下内容:

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

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

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

我想知道这是否是唯一的方法。我对这个解决方案不太满意,因为我觉得它会使 XML 膨胀并使其更难阅读。

当然,我是 WPF 的新手,所以如果这是可以接受的方式,我会这样做....我只是想知道这是否是解决这个简单问题的最佳方式。

【问题讨论】:

    标签: c# wpf string-formatting


    【解决方案1】:

    我只有一个字要告诉你:Run

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

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

    在我看来,只有两种解决方案可以设置一些标记格式,&lt;Run&gt;&lt;Span&gt;

    &lt;Span&gt;&lt;Bold&gt;&lt;Italic&gt;&lt;Underline&gt; 提供了一些有用的简写,但这些不支持绑定。
    &lt;Run&gt; 很冗长,但支持绑定。

    在您的情况下,“最佳”解决方案类似于:

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

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

    更多详情,see also

    【讨论】:

    • 您能否解释一下为什么这是解决此问题的最佳方法/唯一方法?正如我在最初的问题中所说......我对这个解决方案不满意。为什么是最好的?还有其他方法吗?如果是这样,它们与Run 解决方案相比有哪些缺点?
    • 好吧,正如我一直在研究的那样......任何其他解决方案都更加混乱和复杂......因此,这是最优雅的解决方案,并将为此标记问题。
    • @NealByington 编辑了答案
    猜你喜欢
    • 2023-03-20
    • 2010-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2011-08-17
    • 1970-01-01
    • 2011-04-19
    相关资源
    最近更新 更多