Why does a Silverlight TextBox use \r for a newline instead of Environment.Newline (\r\n)?

前端 未结 2 604
面向向阳花
面向向阳花 2021-01-11 19:30

In silverlight, if a TextBox AcceptsReturn, all newlines are \\r, even though Environment.Newline is \\r\\n. Why is this? (WPF has \\r\\n as newline for textbox)

相关标签:
2条回答
  • 2021-01-11 20:02

    I think because of compatibility with other operating systems.

    Silverlight is available on linux and mac operating systems. Both (and most) of these OS's is unix based and unix uses '\r' for new lines. (as far i know only MS using the '\r\n')

    While looking framework source code seems like MS developers mostly used to type '\r\n' instead of using Environment.NewLine.

    0 讨论(0)
  • 2021-01-11 20:14

    I agree with ertan's answer. I have ran into a scenario in which this is inconveniencing.

    We have an application that collects string data from a user through a Silverlight Textbox and stores that data in a SQL Server database, which is a very common. A problem arises when other components of the application use that stored string data expecting line breaks to be represented by "\r\n". One example of such a component is Telerik's reporting solution: See Line break issue in multi line text boxes.

    I overcame this problem by using this value converter:

    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);
        }
    }
    
    0 讨论(0)
提交回复
热议问题