У меня есть RichTextBox
. Внутри находятся FlowDocument
, Paragraph
и Run
, связанные с ViewModel String
.
. Каждый раз, когда я нажимаю кнопку для обновления текста из string
, он сохраняет предыдущий текст и добавляет его:
- message1
- message2message1
- 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;