【问题标题】:Custom text wrapping algorithm in TextBlockTextBlock 中的自定义文本换行算法
【发布时间】:2012-10-26 04:54:35
【问题描述】:

有没有办法在 TextBlock 元素中实现自定义文本换行算法?我的意思是根据控件大小自动包装。目前我使用 TextWrapping 属性,但它没有按我的预期工作。 例如我有这个字符串:

pleasant /'plez(ə)nt/

目前这个文本可以这样换行:

pleasant /'plez
(ə)nt/

但我需要这样的东西(只在空格上换行):

pleasant
/'plez(ə)nt/

据我了解,目前的实现也包含标点符号,但这会导致复杂文本(如单词转录)出现意外行为。

【问题讨论】:

    标签: c# wpf wpf-controls textblock word-wrap


    【解决方案1】:

    你试过了吗

    string s = "pleasant /'plez(ə)nt/";
    string[] words = s.Split(' ');
    foreach (string word in words)
    {
        Console.WriteLine(word);
    }
    

    输出应该是:
    愉快的
    /'plez(ə)nt/

    【讨论】:

    • 是的,但这应该由控件(TextBlock)自动完成,只有在没有足够空间绘制所有单词时才应该转到新行。用户也可以改变窗口大小,控件的大小也会改变。
    • 如果您可以编辑原始问题并将您刚刚在此处给出的评论添加到其中,这可能会有所帮助。正如您现在可以通过几种方式解释您的问题。以防我认为这个答案是你的意思。
    • 对于 HTML/CSS 环境,可以在空格处拆分文本,并将每个部分包裹在 <span> 标签中,并将 CSS white-space 设置为 nowrap
    猜你喜欢
    • 1970-01-01
    • 2020-09-02
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多