我正在使用WPF來顯示覆雜數據(想想報告)。我現在需要對它進行全文搜索。我們目前通過在視覺樹上尋找文本塊來做到這一點。看來這需要在UI線程上完成,是嗎?這裏的問題在於,在整個用戶界面阻止期間發現下一場比賽可能需要相當長的一段時間。在工作線程中走VisualTree進行全文搜索
有沒有辦法規避這個問題?我可以嘗試使用UI自動化,但是一旦找到匹配項,我該如何突出顯示它?使用UI自動化我沒有得到對UI元素的實際對象實例的引用,因此我無法在其上添加裝飾器。
WPF中的全文搜索通常如何實現? XPS瀏覽器如何做到這一點?
我需要突出顯示找到的文本。使用MVVM方法,我將如何選擇/突出顯示ViewModel中找到的文本部分?所有不同的文本部分和ViewModel實例之間必須有某種連接。同樣使用MVVM,VIewModel需要知道View中使用的每個單獨的文本。 ' '這裏的標籤內容只被視圖所知,但它也需要通過文本搜索找到。 –
bitbonk
要使用MVVM來做到這一點,您必須確保您要搜索的所有內容都在您的模型中表現出來,並且您必須想出一個機制將模型與UI相關聯以突出顯示(例如,驗證開始字符和長度的亮點)。如果您完全相信它是您需要搜索的UI,那麼您將無法使用UI線程查詢控件的內容並進行高亮顯示。 UI Automation不會允許您修改用戶無法更改的任何內容。 – GraemeF
UI自動化不會給出找到的控件的邊界框嗎?我可能可以在屏幕座標中添加一個裝飾器......(?) – bitbonk