【问题标题】:WPF TextBox Wrap everywhere in stringWPF TextBox 在字符串中到处换行
【发布时间】:2017-07-18 10:27:06
【问题描述】:

我在 WPF 项目中有一个 TextBox,其中包含如下复杂的正则表达式模式:

<TextBox x:Name="tbPattern" TextWrapping="Wrap" VerticalAlignment="Stretch" FontFamily="Consolas"
    Text="^(?type>([A-Z]|[0-9])+)_(?Y>\d{4})(?M>0[1-9]|1[0-2])(?d>0[1-9]|[1-2][0-9]|3[0-1])_(?H>([0-1][0-9]|2[0-3]))(?m>([0-5][0-9]))(?s>([0-5][0-9]))(~(?n>[1-9][0-9]*))?\.(?ext>([A-Z|a-z|0-9]+))$"
/>

(是的,正则表达式语法无效,但仅用于测试目的...)

因为该模式预计不会包含很多空格,所以我想将文本框文本始终放在行尾,忽略之前的空格字符,就像命令输入用来执行此操作一样(只需打开 cmd 并插入模式。在每一行中,所有字符的范围都会一直到最后一列)。

所以我测试了可用的TextWrapping 属性,但找不到合适的。 NoWrap 产生一些非常混乱的显示,而简单的Wrap 选项将图案分布在不等长的线条上。这也是由WrapWithOverflow 完成的。

如何使用 cmd 样式的包装算法,它不会搜索空格到较早的断行?提前致谢。

【问题讨论】:

    标签: c# wpf xaml textbox word-wrap


    【解决方案1】:

    您可以将空格替换为不间断空格。

    Replace(" ", "\u00a0")
    

    您可以通过属性绑定替换值以保留原始文本。或者您也可以使用转换器。

    【讨论】:

    • 好的,但这不会改变用户的输入吗?如果他或她将文本框中的图案复制到另一个程序,剪贴板将不会包含原始文本,对吗?恐怕这听起来不太友好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多