Подтвердить что ты не робот

Почему Silverlight TextBox использует \r для новой строки вместо Environment.Newline(\ r\n)?

В silverlight, если TextBox AcceptsReturn, все строки новой строки \r, хотя Environment.Newline -\r\n. Почему это? (WPF имеет \r\n как новую строку для текстового поля)

4b9b3361

Ответ 1

Я согласен с ответом 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);
    }
}

Ответ 2

Я думаю, из-за совместимости с другими операционными системами.

Silverlight доступен в операционных системах Linux и Mac. Оба (и большинство) этих ОС основаны на unix, а unix использует '\ r' для новых строк. (насколько я знаю только MS, используя "\ r\n" )

В то время как внешний вид исходного кода выглядит так, как разработчики MS в основном используют для ввода '\ r\n' вместо использования Environment.NewLine.