Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# wpf DocumentViewer-通过GlyphRun获取ITextPointer,反之亦然_C#_Wpf_Documentviewer_Glyph - Fatal编程技术网

C# wpf DocumentViewer-通过GlyphRun获取ITextPointer,反之亦然

C# wpf DocumentViewer-通过GlyphRun获取ITextPointer,反之亦然,c#,wpf,documentviewer,glyph,C#,Wpf,Documentviewer,Glyph,只是想知道是否有人试图侵入WPFDocumentViewer,以使其更有用。我已经花了将近一个星期的时间试图基于我使用反射提取的方法为这个控件创建更强大的API 每个人都知道如何通过反射从文档查看器中获取选定的文本,但我的任务更复杂。具有返回ITextPointers的End和Start属性。此外,我有一个收集提取使用。现在我想知道哪个GlyphRun包含选择开始 所以我想知道如何将ITextPointers转换为glyphrunts,反之亦然。我理解他们之间没有1:1的关系。这个带有关闭API

只是想知道是否有人试图侵入WPF
DocumentViewer
,以使其更有用。我已经花了将近一个星期的时间试图基于我使用反射提取的方法为这个控件创建更强大的API

每个人都知道如何通过反射从文档查看器中获取选定的文本,但我的任务更复杂。具有返回
ITextPointers
End
Start
属性。此外,我有一个收集提取使用。现在我想知道哪个
GlyphRun
包含选择开始


所以我想知道如何将
ITextPointers
转换为
glyphrunts
,反之亦然。我理解他们之间没有1:1的关系。这个带有关闭API的控件和上周花在Reflector中的时间让我睡不好觉。我希望可能有人曾经尝试过这样做,或者看到过代码示例,并且能够引导我穿过这些丛林。

我建议您放弃这种方法。像这样进行大量的私有反射不应该成为生产代码的基础,它非常脆弱,在某些情况下是完全禁止的。坦率地说,您最好找到一个适合您需要的第三方控件,例如


或者,如果这不是一个选项,您可能需要在一定的时间内创建自己的控件,以使其正常工作。

正如您所说,没有1:1的关系。此外,GlyphRun仅从对象继承。然而,它确实包含值得注意的方法。例如,GlyphRun.ComputeAlignmentBox()返回一个Rect,其中可能包含位置数据。我想这是关键。。。关联GlyphRun和TextPointer位置数据。你能和我们分享一些代码吗?这样我们可以做一些尝试also@HBMAAM,在这一年中,我找到了或多或少的有效解决方案,我将在这里发布,但这需要一些时间。@Snowbear liaaar