我有一個名爲ItemsSource
的依賴屬性的UserControl。當屬性發生變化時,我需要計算各種元素的大小。爲此,我必須訪問UserControl的ActualWidth
和ActualHeight
屬性。如何確保佈局更新已經發生?
是,如果對象是一個佈局更新之前分配給ItemsSource
已經發生的問題,ActualWidth
和ActualHeight
爲0
我怎樣才能確保佈局更新響應屬性更改事件發生之前,同時還允許在佈局更新發生之前更改屬性?
我有一個名爲ItemsSource
的依賴屬性的UserControl。當屬性發生變化時,我需要計算各種元素的大小。爲此,我必須訪問UserControl的ActualWidth
和ActualHeight
屬性。如何確保佈局更新已經發生?
是,如果對象是一個佈局更新之前分配給ItemsSource
已經發生的問題,ActualWidth
和ActualHeight
爲0
我怎樣才能確保佈局更新響應屬性更改事件發生之前,同時還允許在佈局更新發生之前更改屬性?
我後來意識到,實際上我並不需要在每次數據源更改時重新生成行和列。相反,我在我的UserControl上處理SizeChanged
事件並在那裏執行大小計算。當控件第一次顯示時,事件似乎會觸發,所以它有機會在沒有任何額外努力的情況下進行初始計算。
這是你在找什麼 - UpdateLayout()
但是,這是不建議頻繁使用,因爲它會導致佈局通行證上的UIElement定義的函數。
這似乎沒有任何效果。 ActualWidth和ActualHeight仍然爲0. – 2009-09-07 00:28:42
在調用'element.UpdateLayout()'之前,你需要一個'element.Measure(Double.PositiveInfinity,Double.PostiveInfinity)'和一個'element.Arrange(element.DesiredSize)'。 – Dennis 2012-02-25 22:45:21