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

前端 未结 2 620
面向向阳花
面向向阳花 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: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);
        }
    }
    

提交回复
热议问题