WPF:查找元素的位置

时间:2009-05-25 11:39:36

标签: c# wpf multithreading

在回答之前,这并不像你在阅读标题时想到的那样简单。

我有一个ItemsControl,绑定到一个Ob的ObservableCollection,数据被描述为DataTemplate。到目前为止,这是一个经典案例。

当我添加一个新元素时,我需要知道正在渲染的元素的窗口内的确切坐标和位置。

我意识到Collection需要一段时间来提升事件,WPF使用他所有的布局机制来实际定位元素。

我希望在完成后收到通知并抓住这些位置。 我正在使用那些代码行

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

现在的问题是,当我点击这些线时,它总是为时过早,如果我“等待”一秒钟并让wPF完成,我确实得到了正确的位置。

我试图找到比“等待”UI-Thread更好的解决方案。 也许你可以帮忙:))

谢谢! 爱丽儿

1 个答案:

答案 0 :(得分:0)

可能有UIElement's events中的一个会在布局数据可用时告诉您。 LayoutUpdate看起来很有希望。