2017-07-18 49 views
0

我在包含这样一个复杂的正则表达式模式的WPF项目有一个TextBoxWPF文本框包裹到处串

<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风格中使用包装算法,该算法不会搜索更早断行的空格?提前致谢。

回答

1

您可以将空间替换为非中断空间。

Replace(" ", "\u00a0") 

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

+0

好的,但是这不会改变用户的输入吗?如果他或她将文本框中的模式复制到另一个程序中,剪贴板将不包含原始文本,对吗?我担心这听起来不是最大限度的用户友好。 – KnorxThieus