2

I have a flowdocument like this:

var mcFlowDoc = new FlowDocument();
var para = new Paragraph();
para.Inlines.Add(new Run("This is the first line."));
para.Inlines.Add(new Run("This is the second line."));
para.Inlines.Add(new Run("This is the third line."));
mcFlowDoc.Blocks.Add(para);
richTextBox.Document = mcFlowDoc;

I need to change the background of one of the lines by clicking on any part of that text.

First of all I am trying to change the background of a given inline (regardless of mouse click), but I am unable to do it.

Any help would be appreciated.

Edit: I could change the background color of a run, but then I had to add all runs again and redraw. I need it to work faster, so I'm just trying to change a run without adding all again.

4

1 回答 1

2

你可以添加一个Style订阅Run例如MouseLeftButtonDown

<RichTextBox.Resources>
    <Style TargetType="Run">
        <EventSetter Event="MouseLeftButtonDown" Handler="Run_Click" />
    </Style>
</RichTextBox.Resources>

并像这样处理事件

void Run_Click(object sender, MouseButtonEventArgs e)
{
    Run run = sender as Run;
    run.Background = Brushes.Red;
}
于 2013-07-28T10:34:09.783 回答