为什么Silverlight TextBox使用\ r代替换行而不是Environment.Newline(\ r \ n)?

在silverlight中,如果TextBox AcceptsReturn,所有换行都是\ r \ n,即使Environment.Newline是\ r \ n。 为什么是这样? (WPF将\ r \ n作为文本框的换行符)

我同意ertan的回答。 我遇到了一个令人不安的场景。

我们有一个应用程序通过Silverlight文本框从用户收集字符串数据,并将该数据存储在SQL Server数据库中,这是非常常见的。 当应用程序的其他组件使用存储的字符串数据期望换行符由"\r\n"表示时,会出现问题。 此类组件的一个示例是Telerik的报告解决方案:请参阅多行文本框中的换行符问题 。

我通过使用此值转换器克服了这个问题:

 public class LineBreakCorrectionConverter : IValueConverter { private const string CR = "\r"; private const string CRLF = "\r\n"; public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string text = value as string; if (text == null) return null; return text.Replace(CRLF, CR); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string text = value as string; if (text == null) return null; return text.Replace(CR, CRLF); } } 

我认为是因为与其他操作系统的兼容性。

Silverlight可在linux和mac操作系统上使用。 这些OS的两个(和大多数)都是基于unix的,而unix使用’\ r’来表示新行。 (据我所知只有MS使用’\ r \ n’)

虽然看起来框架源代码看起来像MS开发人员主要用来键入’\ r \ n’而不是使用Environment.NewLine。