关于我正在瞄准的视觉线索,请参阅关于Firefox功能的this文章.
如果默认情况下没有办法完成这个,我想知道是否有WPF中实现的任何第三方控件.
解决方法
步骤是:
>创建一个派生自RichTextBox的类
>添加类型为ObservableCollection< TextRange>的“AdditionalRanges”属性它将包含除当前TextSelection之外的所有选定范围
> Override OnPreviewMouseLeftButtonDown:如果按住Ctrl键,将当前TextSelection组合到“AdditionalRanges”属性中并清除Selection,否则清除“AdditionalRanges”.
>在构造函数中,将一个CollectionChanged处理程序添加到使用TextRange.ApplyPropertyValue()的“AdditionalRanges”中,使集合中的添加范围显示为高亮,并且删除的范围正常显示.
在实现中,为了方便起见,我还建议您实施更多的属性:
>将TextSelection与AdditionalRanges相结合的“AllRanges”属性
>一个可绑定的“文本”属性
>一个可绑定的“SelectedText”属性
这些都是非常微不足道的.
最后说明:
>更新AdditionalRanges或计算AllRanges时,如果TextSelection与现有AdditionalRange重叠,则将其替换为组合范围,否则将TextSelection添加到列表中.>您可以添加一个TextChanged处理程序,以便知道何时更新“Text”属性,以及一个PropertyChangedCallback来知道何时更新FlowDocument
原文地址:https://www.jb51.cc/csharp/93429.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。