我的TextBox
定义如下:
<TextBox Text="{Binding License.LicenseKey}"
HorizontalContentAlignment="Left"
TextAlignment="Justify"
Width="350"
Height="100"
Margin="10,0,0,0"
TextWrapping="Wrap" />
目前长字符串会在特殊字符上中断:
我希望它一旦到达TextBox
的末尾就可以简单地打破任何角色:
有没有办法禁用TextBox
使用的破产?我尝试了TextAlignment
和HorizontalContentAlignment
的各种选项无效。
答案 0 :(得分:0)
由于TextBox的TextWrapping属性选项有限,这非常混乱。
请参阅此论坛帖子:https://social.msdn.microsoft.com/Forums/vstudio/en-US/3cb5b7a8-5628-4dc3-bd43-be67d1a449b1/how-to-customizing-textblock-line-breaking-algorithm-in-textwrapping?forum=wpf以解释您问题下面的U + 200B评论。但是,这对您不起作用,因为您不希望它破坏。如果有一个标准的非破坏版本的字符库,我一直无法挖掘它。
我看到这个工作的唯一方法是使用固定宽度的字体,跟踪在框的容量旁边输入的字符数,并在达到容量时添加自己的换行符。
答案 1 :(得分:0)
您可以在每个字符后面添加一个零宽度空格(U + 200B),这样可以在任何位置中断。所以需要在视图模型中定义一个属性,你应该和它的getter进行这种转换,例如:
string SomeProperty
{
get { return String.Join(string.Empty, License.LicenseKey.Zip(new string('\u200B', License.LicenseKey.Length), (x, y) => x.ToString() + y)); }
set { Model.LicenseKey = value?.Replace("\u200B", string.Empty); }
}
,以便显示换行符。但是我不知道光标位置会发生什么。