为什么我的多行文本框的绑定值中只有“\r”?
Why there is only "\r" in the binding value of my multiple line TextBox?
我有一个如下定义的文本框:
<TextBox x:Name="TextBoxName"
TextWrapping="Wrap"
AcceptsReturn="True"
BorderThickness="0"
PlaceholderText="{Binding PlaceHolderText}"
Text="{Binding TestValue, Mode=TwoWay}" />
当我键入 test1
,然后键入 Enter
键,然后在这个多行文本框中键入 test2
,我检查 TestValue
的值,然后我参见 test1\rtest2
。我很困惑,为什么return只在这里显示为\r
。在 windows 中不是 \r\n
吗?
如果我想把test1\rtest2
写成xml,我可以把\r
换成\n
吗,这是unix风格的?我尝试使用它,但它不起作用。
XmlWriterSettings xws = new XmlWriterSettings();
xws.NewLineChars = "\n";
xws.NewLineHandling = NewLineHandling.Replace;
从这个post,它提到这个换行符(只有\r)是设计的。所以如果想把xml中的“\r”换成“\n”,解决方法是先把textbox的Text中的“\r”换掉,然后写入xml.
string text;
if (TextBoxName.Text.Contains("\r")) {
text = TextBoxName.Text.Replace("\r", "\n");
}
//use text to do something.
或使用Environment.NewLine方法获取为此环境定义的换行符。
if (TextBoxName.Text.Contains("\r"))
{
text = TextBoxName.Text.Replace("\r", Environment.NewLine);
}
我有一个如下定义的文本框:
<TextBox x:Name="TextBoxName"
TextWrapping="Wrap"
AcceptsReturn="True"
BorderThickness="0"
PlaceholderText="{Binding PlaceHolderText}"
Text="{Binding TestValue, Mode=TwoWay}" />
当我键入 test1
,然后键入 Enter
键,然后在这个多行文本框中键入 test2
,我检查 TestValue
的值,然后我参见 test1\rtest2
。我很困惑,为什么return只在这里显示为\r
。在 windows 中不是 \r\n
吗?
如果我想把test1\rtest2
写成xml,我可以把\r
换成\n
吗,这是unix风格的?我尝试使用它,但它不起作用。
XmlWriterSettings xws = new XmlWriterSettings();
xws.NewLineChars = "\n";
xws.NewLineHandling = NewLineHandling.Replace;
从这个post,它提到这个换行符(只有\r)是设计的。所以如果想把xml中的“\r”换成“\n”,解决方法是先把textbox的Text中的“\r”换掉,然后写入xml.
string text;
if (TextBoxName.Text.Contains("\r")) {
text = TextBoxName.Text.Replace("\r", "\n");
}
//use text to do something.
或使用Environment.NewLine方法获取为此环境定义的换行符。
if (TextBoxName.Text.Contains("\r"))
{
text = TextBoxName.Text.Replace("\r", Environment.NewLine);
}