在 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 也非常复杂。
有什么办法吗?谢谢
最后,我在视图中使用隐藏的代码,使用"格式"按钮从 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 逻辑。