dth*_*her 5 wpf formatting richtextbox
我想在WPF RichTextBox中允许一些简单的格式化命令,但不允许其他命令.
我创建了一个工具栏,允许用户应用粗体或斜体,并使用项目符号或编号列表.(基本上,我只想支持适用于博客或wiki的格式化命令.)
问题是用户可以执行剪切和粘贴操作,插入带有前景色和背景色的文本,以及其他类型的不允许的格式.这可能导致令人讨厌的可用性问题,例如用户将白色文本粘贴到白色背景上.
有没有办法关闭这些高级格式化功能?如果没有,有没有办法可以拦截粘贴操作并删除我不想要的格式?
您可以像这样截取粘贴操作:
void AddPasteHandler()
{
DataObject.AddPastingHandler(richTextBox, new DataObjectPastingEventHandler(OnPaste));
}
void OnPaste(object sender, DataObjectPastingEventArgs e)
{
if (!e.SourceDataObject.GetDataPresent(DataFormats.Rtf, true)) return;
var rtf = e.SourceDataObject.GetData(DataFormats.Rtf) as string;
// Change e.SourceDataObject to strip non-basic formatting...
}
Run Code Online (Sandbox Code Playgroud)
凌乱的部分是保留一些但不是全部的格式.该rtf变量将是RTF格式的字符串,您可以使用第三方库进行解析,使用类似DOM的模式遍历树,并使用文本,粗体和斜体发出新的RTF.然后将其重新填入e.SourceDataObject或其他一些选项(请参阅下面的文档).
这是PastingHandler文档:
这是许多RTF解析器之一:
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |