【问题标题】:Why does a Silverlight TextBox use \r for a newline instead of Environment.Newline (\r\n)?为什么 Silverlight 文本框使用 \r 代替 Environment.Newline (\r\n)?
【发布时间】:2010-08-31 15:13:56
【问题描述】:

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

【问题讨论】:

    标签: c# .net wpf silverlight


    【解决方案1】:

    我同意ertan 的回答。我遇到了一个不方便的场景。

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

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

    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。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-23
      • 2011-09-18
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      • 2017-01-25
      • 2020-03-31
      • 1970-01-01
      相关资源
      最近更新 更多