为什么我的多行文本框的绑定值中只有“\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);
}