C# WPF RichTextBox更改字体颜色内联

C# WPF RichTextBox更改字体颜色内联,c#,wpf,richtextbox,rtf,foreground,C#,Wpf,Richtextbox,Rtf,Foreground,我已经为这个解决方案搜索了一段时间,所以现在我在这里发布 现在我可以更改整个RichTextBox的前景色: yourRichTextBox.Foreground = Brushes.Red; 我还可以更改用户用光标选择的某些文本的颜色: if(!yourRichTextBox.Selection.IsEmpty){ yourRichTextBox.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.

我已经为这个解决方案搜索了一段时间,所以现在我在这里发布

现在我可以更改整个
RichTextBox
的前景色:

yourRichTextBox.Foreground = Brushes.Red;
我还可以更改用户用光标选择的某些文本的颜色:

if(!yourRichTextBox.Selection.IsEmpty){
    yourRichTextBox.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Red);
}
但我希望能够更改用户键入的下一个文本的颜色

我有一个颜色选择器框,它返回用户想要文本的颜色。因此,用户以普通黑色字体在
RichTextBox
中键入内容,然后单击颜色选择器按钮,选择一种颜色,点击OK,然后他们键入的下一个内容将使用该颜色。是有办法做到这一点还是我运气不好


我能想到的唯一方法是使用一个缓冲区来捕获用户键入的每个字符,然后在键入的每个字母上设置前台属性,然后将其添加回
RichTextBox
,ideas

选择时使用的代码与我的代码相同。例如:

    <RichTextBox x:Name="yourRichTextBox" TextChanged="yourRichTextBox_TextChanged_1">
        <FlowDocument>
            <Paragraph>
                <Run Text="fdsfdfsda"/>
            </Paragraph>
            <Paragraph>
                <Run/>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>

一旦开始键入,第二个字母及其后(第一个触发此更改)将变为红色。

我认为这里找到的解决方案会起作用(未测试):AppendText函数重载,可以使用其他颜色属性调用。我必须找出第二个字母,但这绝对是我想要的,我甚至没有想过捕获
TextChanged
事件。谢谢PreviewKeyDown而不是TextChanged。
    private void yourRichTextBox_TextChanged_1(object sender, TextChangedEventArgs e)
    {
        yourRichTextBox.Selection.ApplyPropertyValue(RichTextBox.ForegroundProperty, Brushes.Red);
    }