如何确保发生布局更新?

时间:2009-09-06 23:58:11

标签: c# silverlight events layout actualwidth

我有一个UserControl,其中包含一个名为ItemsSource的依赖项属性。当属性改变时,我需要计算各种元素的大小。为此,我必须访问UserControl的ActualWidthActualHeight属性。

问题是,如果在发生布局更新之前将对象分配给ItemsSource,则ActualWidthActualHeight为0。

如何在响应属性更改事件之前确保布局更新,同时仍允许在布局更新发生之前更改属性?

2 个答案:

答案 0 :(得分:1)

这就是你要找的东西 - UpdateLayout()

这是在UIElement上定义的函数,但不推荐频繁使用,因为它会导致布局传递。

答案 1 :(得分:0)

我后来才意识到,每次我的数据源发生变化时,我实际上并不需要重建行和列。相反,我在UserControl上处理SizeChanged事件并在那里执行大小计算。当控件首次显示时,该事件似乎会触发,因此它有机会进行初始计算而无需任何额外的努力。