2013-06-20 2 views
0

В настоящее время я застреваю с проблемой, которая проста с первого взгляда. Его автоматическое тестирование графического интерфейса.Доступ к WPF DataGrid после создания видимого элемента

Я хочу, чтобы строка/ячейка WPF DatGrid была полностью видна с помощью прокрутки с помощью ScrollIntoView (строка), а затем сразу после этого обращалась к строке/ячейке. К сожалению, прокрутка в ScrollViewer, похоже, происходит асинхронно. Это означает, что мне нужно дождаться завершения прокрутки до доступа к строке/ячейке. Для этого я нашел событие ScrollChanged, которое я могу подписаться.

Существует только одна деталь, которую я не могу решить: если строка/ячейка, к которой я хочу получить доступ, уже видна (и прокрутки не требуется) Я не получаю это событие, и алгоритм застревает. Я не смог найти надежный способ предсказать, действительно ли прокручивается вызов ScrollIntoView (строка).

Любая идея, как решить эту проблему?

+0

Вы попробовали 'dataGrid.UpdateLayout();' после вас 'ScrollIntoView'? – dkozl

+0

Спасибо! Это действительно работает! Я мог представить, что этот трюк может пригодиться и в некоторых других случаях. Это где-то задокументировано? Как вы узнали, что обновление макета также обновляет порт представления? – Silicomancer

+0

Да, это стандартный метод 'UIElement'. Я вложил ссылку в ответ. – dkozl

ответ

1

Чтобы убедиться, что макет обновлен, звоните UIElement.UpdateLayout после того, как вы ScrollIntoView и перед тем, как использовать товар. Цитата MSDN it

Обеспечивает, чтобы все визуальные дочерние элементы этого элемента были правильно обновлены для макета.

Смежные вопросы