2015-01-15 33 views
0

我對documentviewer控件有一個非常具體的問題。讓我解釋一下:WPF Documentviewer文檔只能在鼠標輸入時正確更新

我有一個默認的文檔查看器,位於我的數據表示之上的一個不可見的網格。 當我按下特定按鈕(生成報告,綁定到我的viewmodel上的命令)時,會生成documentviewer(固定頁面等)的報告和xps文檔,並將documentviewer-grid設置爲可見。 目前爲止這麼好。奇怪的事情和我的問題的根源在於,一切工作都正常,並且在通過觸摸屏上的觸摸輸入按下按鈕時正常顯示。

當它通過鼠標按下時,該命令觸發,文檔查看器顯示,但文檔顯示全部混亂。表格亂七八糟,自定義控件尺寸不正確等。 只要將光標移動到文檔中或單擊文檔查看器內的區域,所有內容都會排列並正確顯示。

我懷疑觸摸和點擊之間的差異,關注焦點的控制,並嘗試各種手動更新佈局控件變得可見時的黑客。沒有成功。

此外:我的XPS文檔包含一個帶有usercontrols和網格的佈局,這些佈局在generate-report命令被激發時生成。有趣的是,僅當頁面上有多個元素時,用戶控件縮放似乎纔會崩潰。

編輯:對可見性的更改完全沒有效果。當文檔查看器在整個過程中可見並且綁定的文檔被更新時,它的行爲完全相同。

任何幫助或想法讚賞。

+2

如果您向我們提供一些能夠顯示您的問題的代碼,則更易於回答。 – AndersNS

+0

當代碼不是直接問題時,很難決定顯示哪些代碼。當按鈕被點擊而沒有被觸摸時,文檔顯示錯誤。我想這個問題也可能是,點擊和觸摸綁定到命令的按鈕之間的區別到底是什麼。 –

+0

你怎麼知道代碼不是問題? –

回答

0

經過一個星期的試驗後,我終於找到了解決方案。

所有的問題和難以理解的佈局魔術都是由於應該顯示的FixedDocument已創建(並已分配給文檔查看器),並且由工作線程填充其內容。

顯示了內容,但佈局僅在鼠標懸停或單擊或文檔查看器收到任何輸入時進行更新。 我認爲在輸入時,documentviewer會對指定的文檔進行另一次刷新。

所以我最終的解決方案很簡單:在添加內容時創建一個「正在進行中」的固定文檔,並在完成所有工作時將其分配給查看器。

現在剩下的是內容和佈局顯示正確,但有時需要5-10秒才能顯示內容。但是,這只是加載大量文檔時的性能問題。我會試着弄清楚在文檔完全加載之前是否可以構建某種加載通知。

相關問題