C# WPF:查找元素的位置
在回答之前,这并不像你读标题时想的那么简单 我有一个ItemsControl,它绑定到T的ObservableCollection,数据被描述为DataTemplate。到目前为止,这是一个经典案例 当我添加一个新元素时,我需要知道被渲染元素的确切坐标和窗口内的位置 我意识到集合引发事件需要一段时间,WPF需要使用所有布局机制来实际定位元素 我希望在完成后得到通知并抓取这些位置。 我正在使用这些代码行C# WPF:查找元素的位置,c#,wpf,multithreading,C#,Wpf,Multithreading,在回答之前,这并不像你读标题时想的那么简单 我有一个ItemsControl,它绑定到T的ObservableCollection,数据被描述为DataTemplate。到目前为止,这是一个经典案例 当我添加一个新元素时,我需要知道被渲染元素的确切坐标和窗口内的位置 我意识到集合引发事件需要一段时间,WPF需要使用所有布局机制来实际定位元素 我希望在完成后得到通知并抓取这些位置。 我正在使用这些代码行 UIElement item = list.ItemContainerGenerator.Co
UIElement item = list.ItemContainerGenerator.ContainerFromItem(foo) as UIElement;
Point point = TranslatePoint(new Point(0.0, 0.0), Window.GetWindow(item));
现在的问题是,当我点击这些线时,总是为时过早,如果我“等待”一秒钟,让wPF完成,我确实得到了正确的位置
我试图找到比“等待”UI线程更好的解决方案。
也许你可以帮忙:)
谢谢!
Ariel可能其中一个会告诉您布局数据何时可用。看起来很有希望。嗯,我以前试过。在你回答之后,我重新检查了我的代码。我需要多做一些同步的工作,但确实有帮助。谢谢。ChrisF,谢谢你的编辑。您是如何消除代码部分中的滚动的?