Как сообщить о проблеме с WPF RichTextBox, неправильно отображающей строки с двойным интервалом - PullRequest
1 голос
/ 15 января 2020

Я нашел ошибку в классе WPF Richtextbox.

<UserControl x:Class="RtbControl.WpfRichTextBox"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:RtbControl"
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800">
    <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <RichTextBox x:Name="Rtb" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
        </RichTextBox>
    </Grid>
</UserControl>

Кодовый код:

using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Documents;

namespace WpfAppCore
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            var path = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Body.rtf");
            var rawRtf = File.ReadAllText(path);

            Rtb.Document.Blocks.Clear();

            var tr = new TextRange(Rtb.Document.ContentStart, Rtb.Document.ContentEnd);
            using (var stream = new MemoryStream())
            {
                var bytes = Encoding.Default.GetBytes(rawRtf);
                stream.Write(bytes, 0, bytes.Length);
                stream.Position = 0;
                tr.Load(stream, DataFormats.Rtf);
                Rtb.CaretPosition = Rtb.CaretPosition.DocumentStart;
            }
        }
    }
}

Файл "Body.rtf" был создан в Word и имеет два абзаца с двойным интервалом. Однако этот интервал теряется при загрузке файла.

Если я загружаю файл в элемент управления richtextbox winforms, интервал сохраняется, и я даже могу изменить его, используя метод SendMessage user32.dll.

Это то, что мне нужно в моем приложении, и оно заставит меня отказаться от подхода WPF, если я не смогу обойти его. Есть ли способ довести это до сведения MS, чтобы увидеть, могут ли они либо объяснить мне, что я делаю неправильно, либо хотя бы объяснить, что происходит под одеялом?

...