2009-05-25 74 views
0

在回答之前,並不像您在閱讀標題時想到的那樣容易。WPF:找到元素的位置

我有一個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線程更好的解決方案。 也許你可以幫忙:)

謝謝! Ariel

+0

ChrisF,感謝您的編輯。 你是如何消除代碼部分中的滾動? – ArielBH 2009-05-25 12:29:16

回答

0

可能是UIElement's events之一會告訴你佈局數據何時可用。 LayoutUpdate看起來很有希望。

+0

嗯,我曾嘗試過。在您的答案後,我重新檢查了我的代碼。我需要做更多的同步化工作,但它確實有幫助。 謝謝。 – ArielBH 2009-05-25 12:23:32