Почему текстовое поле Silverlight использует \ r для новой строки вместо Environment.Newline (\ r \ n)? - PullRequest
10 голосов
/ 31 августа 2010

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

Ответы [ 2 ]

2 голосов
/ 27 августа 2011

Я согласен с ответом Эртана.Я столкнулся со сценарием, в котором это вызывает неудобства.

У нас есть приложение, которое собирает строковые данные от пользователя через текстовое поле 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);
    }
}
1 голос
/ 01 сентября 2010

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

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

Хотя при взгляде на исходный код фреймворка кажется, что разработчики MS чаще всего использовали для ввода \ n \ вместо 'Environment.NewLine.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...