【问题标题】:wpf DocumentViewer - get ITextPointer by GlyphRun and vice versawpf DocumentViewer - 通过 GlyphRun 获取 ITextPointer,反之亦然
【发布时间】:2011-07-07 13:28:00
【问题描述】:

只是想知道是否有人试图侵入 WPF DocumentViewer 以使其更有用。我已经花了将近一周的时间尝试根据我使用反射提取的方法为该控件创建更强大的 API。

每个人都知道如何通过反射从文档查看器中获取选定的文本,但我的任务更复杂。 Selected text 具有返回 ITextPointersEndStart 属性。此外,我还有一组使用this code 提取的GlyphRuns。现在最后我想找出哪个GlyphRun 包含选择开始。

所以我想知道如何将ITextPointers 转换为GlyphRuns,反之亦然。我知道他们没有一对一的关系。这个带有封闭 API 的控件以及上周在 Reflector 中花费的时间并没有让我睡得很好。我希望也许有人之前尝试过这样做或看过代码示例,并且能够引导我穿过这些丛林。

【问题讨论】:

  • 如你所说,没有1:1的关系。此外,GlyphRun 仅继承自对象。但是,它确实包含值得注意的方法。 (我没有尝试过。)例如,GlyphRun.ComputeAlignmentBox() 返回一个 Rect,它可能包含位置数据。我认为这是关键……将 GlyphRun 和 TextPointer 位置数据关联起来。
  • 你能和我们分享一些代码,以便我们也可以尝试一下
  • @HBMAAM,在这一年里我找到了或多或少可行的解决方案,我打算在这里发布它,但这需要一些时间。
  • @Snowbear liaaar

标签: c# wpf documentviewer glyph


【解决方案1】:

我建议您放弃这种方法。像这样进行大量的私有反射不是你应该基于生产代码的东西,在某些情况下它非常脆弱和完全禁止。坦率地说,您最好找到适合您需求的 3rd 方控件,例如 www.infragistics.com

或者,如果这不是一个选项,您可能可以创建自己的控件,而您必须投入大量时间使其工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-18
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多