2013-06-20 110 views
0

目前我遇到了一見鍾情的簡單問題。它關於自動GUI測試。使元素可見後訪問WPF DataGrid

我想通過使用ScrollIntoView(行)滾動,然後直接訪問行/單元格後,使WPF DatGrid的行/單元格完全可見。不幸的是ScrollViewer中的滾動似乎是異步發生的。這意味着我需要等待滾動才能訪問行/單元格。爲此我找到了我可以訂閱的ScrollChanged事件。

只有一個我無法解決的細節:如果我想要訪問的行/單元格已經可見(並且不需要滾動),我不會收到該事件並且算法卡住了。我無法找到一個可靠的方法來預測ScrollIntoView(row)的調用實際上是否滾動。

任何想法如何解決這個問題?

+0

你試過'dataGrid.UpdateLayout();''ScrollIntoView'後? – dkozl

+0

謝謝!這真的似乎工作!我可以想象,這個技巧在其他一些情況下也可以派上用場。它是否記錄在某處?你怎麼知道更新佈局也更新了視口? – Silicomancer

+0

是的,它標準的'UIElement'方法。我已將鏈接放入答案中。 – dkozl

回答

1

要確保佈局已更新,請在ScrollIntoView之後並且希望使用項目之前致電UIElement.UpdateLayout。引用MSDN它

確保此元素的所有視覺子元素都已正確更新佈局。