我有一个 UserControl,其依赖属性名为ItemsSource
. 当属性发生变化时,我需要计算各种元素的大小。为此,我必须访问 UserControl 的ActualWidth
和ActualHeight
属性。
ItemsSource
问题是,如果一个对象在布局更新发生之前被分配,ActualWidth
并且ActualHeight
为 0。
如何确保在响应属性更改事件之前发生布局更新,同时仍然允许在发生布局更新之前更改属性?
我有一个 UserControl,其依赖属性名为ItemsSource
. 当属性发生变化时,我需要计算各种元素的大小。为此,我必须访问 UserControl 的ActualWidth
和ActualHeight
属性。
ItemsSource
问题是,如果一个对象在布局更新发生之前被分配,ActualWidth
并且ActualHeight
为 0。
如何确保在响应属性更改事件之前发生布局更新,同时仍然允许在发生布局更新之前更改属性?
这是你要找的东西吗 - UpdateLayout()
这是一个在 UIElement 上定义的函数,但不建议频繁使用,因为它会导致布局通过。
后来我意识到,每次我的数据源更改时,我实际上并不需要重新构建行和列。相反,我SizeChanged
在我的 UserControl 上处理事件并在那里执行大小计算。该事件似乎在控件首次显示时触发,因此它有机会进行初始计算而无需任何额外努力。