WPF: поиск местоположения элемента - PullRequest
0 голосов
/ 25 мая 2009

Прежде чем ответить, это не такой простой вопрос, как вы могли подумать, когда читали заголовок.

У меня есть ItemsControl, который связан с ObservableCollection T и данные описываются как DataTemplate. Пока что это классический случай.

Когда я добавляю новый элемент, мне нужно знать точную координату и позиции внутри окна визуализируемого элемента.

Я понимаю, что есть время, необходимое Коллекции, чтобы вызвать событие, и WPF использует весь свой механизм компоновки для фактического позиционирования элемента.

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

UIElement item = list.ItemContainerGenerator.ContainerFromItem(foo) as UIElement;
Point point = TranslatePoint(new Point(0.0, 0.0), Window.GetWindow(item));

Проблема теперь в том, что когда я нажимаю эти строки, это всегда преждевременно. Если я «подожду» секунду и позволю wPF закончить, я получу правильное местоположение.

Я пытаюсь найти лучшие решения, чем "ожидание" UI-Thread. Может быть, вы можете помочь:)

Спасибо! Ariel

1 Ответ

0 голосов
/ 25 мая 2009

Вероятно, одно из событий UIElement сообщит вам, когда будут доступны данные макета. LayoutUpdate выглядит многообещающе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...