如何通知容器控件子控件的大小已更改?

时间:2009-07-13 03:43:29

标签: wpf

我正在制作一个UserPatrol,它是StackPanel的子节点。当内容发生变化时,控件的大小也应该改变。 UserControl应该如何通知StackPanel(或任何其他容器控件)它的大小已经改变了?

例如,如果您有一个Label控件并更改了Content元素,那么它将被调整大小。它是如何做到的?

2 个答案:

答案 0 :(得分:0)

调用InvalidateMeasure()。这会导致StackPanel(或其他容器控件)重新计算其布局。

答案 1 :(得分:0)

此外,除了InvalidateMeasure之外,如果大小的更改是依赖项属性更改的结果,则可以设置FrameworkPropertyMetadata.AffectsMeasure标志:

public static DependencyProperty ToolbarProperty =
            DependencyProperty.Register("Toolbar", typeof(UIElement),
            typeof(EditorWindow), 
            new FrameworkPropertyMetadata(null,FrameworkPropertyMetadataOptions.AffectsArrange|
            FrameworkPropertyMetadataOptions.AffectsMeasure|FrameworkPropertyMetadataOptions.AffectsRender));