2011-03-02 47 views
35

只是想知道是否有人試圖破解WPF DocumentViewer以使其更有用。我已經花了將近一週的時間,試圖基於我使用反射提取的方法爲這個控件創建更強大的API。wpf DocumentViewer - 通過GlyphRun獲取ITextPointer,反之亦然

每個人都知道如何通過反射從文檔查看器中獲取選定的文本,但我的任務更復雜。 Selected textEndStart屬性返回ITextPointers。我還收集了使用this code提取的GlyphRuns。現在終於我想知道哪個GlyphRun包含選擇開始。

所以我想知道如何將ITextPointers轉換爲GlyphRuns,反之亦然。我知道他們沒有1:1的關係。封閉的API和上週花在Reflector上的這種控制不會讓我睡得好。我希望也許有人試過之前做過或者看過代碼示例,並且能夠引導我通過這些叢林。

+2

正如你所說,沒有1:1的關係。此外,GlyphRun只能從對象繼承。但是,它確實包含值得注意的方法。 (我還沒有嘗試過其中任何一個。)例如,GlyphRun.ComputeAlignmentBox()返回一個Rect,它可能包含位置數據。我認爲這是關鍵...將GlyphRun和TextPointer位置數據相關聯。 – 2011-12-08 21:07:31

+1

你可以與我們分享一些代碼,這樣我們可以嘗試一些嘗試 – 2012-04-28 12:38:33

+2

@HBMAAM,在這一年我找到或多或少的工作解決方案,我打算在這裏發佈,但這需要一些時間。 – Snowbear 2012-04-28 14:51:28

回答

1

我會建議你放棄這種方法。像這樣做很多私人反射並不是你應該把生產代碼作爲基礎的東西,它在某些情況下是非常脆弱和徹底禁止的。坦率地說,你最好找到適合你需求的第三方控制,例如www.infragistics.com

或者如果這不是一個選項,你可以創建自己的控制,你必須沉浸在獲得這個上班。