【问题标题】:WPF: finding the location of an elementWPF:查找元素的位置
【发布时间】:2009-05-25 11:39:35
【问题描述】:

在回答之前,这个问题并不像您阅读标题时所想的那么简单。

我有一个 ItemsControl,它绑定到 T 的 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 更好的解决方案。 也许你可以帮忙:)

谢谢! 爱丽儿

【问题讨论】:

  • ChrisF,感谢您的编辑。你是如何消除代码部分的滚动的?

标签: c# wpf multithreading


【解决方案1】:

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

【讨论】:

  • 嗯,我以前试过。在您回答后,我重新检查了我的代码。我需要做更多的同步工作,但它确实有所帮助。谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-11-26
  • 2012-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多