2014-04-07 41 views
1

我在我的视图模型中使用“粘贴”按钮命令从剪贴板复制RTF。 PastedText是一个RichTextBox势必在我看来,我的字符串属性:在RTF字符串中设置格式?

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

这工作和文本粘贴上按下粘贴按钮。但是,我想锁定粘贴功能的格式并从粘贴的RTF字符串中移除所有格式(颜色,斜体,设置为黑色Arial 12)。

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

获得纯文本,但它在不同的字体大小贴在我需要它以RTF格式。我已经研究过遍历RTF字符串,并在字体大小,颜色等上进行查找/替换,但即使是几个字,RTF也非常复杂。

有没有办法解决这个问题?由于

+0

'GetText()'只返回文本,它不包含任何格式。你看到的是格式化你自己的代码(或XAML)应用到'PastedText'的内容。 –

+0

是的,但GetText(TextDataFormat.RTF)会返回RTF以及粘贴文本的格式。我知道GetText()只会返回无格式的文本,但我需要它作为RTF ... – Hardgraf

+0

使用GetText()我得到了我输入文本的RTF格式,然后将纯文本附加到RTF的末尾。这会导致粘贴的文本在RichTextBox中创建一个新行,并且该粘贴文本的FontSize默认为16 ... – Hardgraf

回答

0

最后我使用的代码背后的视图中的剥离使用“格式”按钮,从自身的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逻辑。