在 RTF 字符串中设置格式

本文关键字:设置 格式 字符串 RTF | 更新日期: 2023-09-27 17:57:03

我在我的视图模型中使用"粘贴"按钮命令从剪贴板复制RTF。 PastedText是我的字符串属性,在我的视图中,RichTextBox 绑定到该属性:

 private void FormatPastedTextCommandAction()
 {
    PastedText += Clipboard.GetText(TextDataFormat.Rtf);                   
 }

这有效,按下"粘贴"按钮时粘贴文本。但是,我想锁定粘贴函数的格式,并从粘贴的 RTF 字符串中删除所有格式(颜色、斜体、设置为黑色 Arial 12)。

我只会使用PastedText += Clipboard.GetText();

获取纯文本,但它以不同的字体大小粘贴,我需要 RTF 格式。我已经考虑过迭代 RTF 字符串并查找/替换字体大小、颜色等,但即使是几个单词,RTF 也非常复杂。

有什么办法吗?谢谢

在 RTF 字符串中设置格式

最后,我在视图中使用隐藏的代码,使用"格式"按钮从 RichTextBox 本身中删除格式:

 private void _btnFormat_Click(object sender, RoutedEventArgs e)
    {
        TextRange rangeOfText = new TextRange(richTextBoxArticleBody.Document.ContentStart, richTextBoxArticleBody.Document.ContentEnd);
        rangeOfText.ApplyPropertyValue(TextElement.ForegroundProperty, Brushes.Black);
        rangeOfText.ApplyPropertyValue(TextElement.FontSizeProperty, "12");
        rangeOfText.ApplyPropertyValue(TextElement.FontFamilyProperty, "Arial");
        rangeOfText.ApplyPropertyValue(TextElement.FontStyleProperty, "Normal");
        rangeOfText.ApplyPropertyValue(Inline.TextDecorationsProperty, null);
        rangeOfText.ApplyPropertyValue(Paragraph.MarginProperty, new Thickness(0));
    }

这做得很好,并没有真正破坏 MVVM 模式,因为代码只是 UI 逻辑。