RichTextBox Добавляет предыдущий текст при обновлении связанной строки - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть RichTextBox. Внутри находятся FlowDocument, Paragraph и Run, связанные с ViewModel String.

. Каждый раз, когда я нажимаю кнопку для обновления текста из string, он сохраняет предыдущий текст и добавляет его:

  1. message1
  2. message2message1
  3. message3message2message1

Я пытался очистить RichTextBox или связанную строку перед тем каждый прогон, но я не могу заставить его работать.


XAML

<RichTextBox x:Name="rtbDisplay" 
             Margin="10,10,110,10" 
             Padding="10"
             VerticalScrollBarVisibility="Auto" 
             HorizontalScrollBarVisibility="Auto" 
             TextOptions.TextRenderingMode="Grayscale"
             Foreground="White" 
             Background="Black"
             IsReadOnly="True"
             IsUndoEnabled="False">
    <FlowDocument>
        <Paragraph>
            <Run x:Name="rtbRun" Text="{Binding MainView.Display_Text, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}" />
        </Paragraph>
    </FlowDocument>
</RichTextBox>

ViewModel

private string _Display_Text;
public string Display_Text
{
    get { return _Display_Text; }
    set
    {
        if (value != _Display_Text)
        {
            _Display_Text = value;
            OnPropertyChanged("Display_Text");
        }
    }
}

C Sharp

Bind Text

private void btnDisplay_Click(object sender, RoutedEventArgs e) 
{
    // [code to clear RichTextBox before each new run here]

    VM.MainView.Display_Text = "message1"; //dynamic changing string text
}

Очистить RichTextBox (не работает)

Метод 1
Не работает

VM.MainView.Display_Text = string.Empty;

Метод 2
Уничтожает <FlowDocument>

rtbDisplay.Text = string.Empty;

Метод 3
Уничтожает <FlowDocument>

Paragraph p = new Paragraph();
rtbDisplay.Document = new FlowDocument(p);
rtbDisplay.BeginChange();
rtbDisplay.SelectAll();
    rtbDisplay.Selection.Text = "";
rtbDisplay.EndChange();

Метод 4
Уничтожает <Run>

rtbRun.Text = string.Empty;
...