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

Wpf 如何通知容器控件子控件的大小已更改?,wpf,Wpf,我正在制作一个UserControl,它是StackPanel的子控件。当控件的内容更改时,控件的大小也应该更改。UserControl应该如何通知StackPanel(或任何其他容器控件)其大小已更改 例如,如果您有一个Label控件并更改了Content元素,那么它将被调整大小。它是如何做到这一点的?调用InvalidateMeasure()。这会导致StackPanel(或其他容器控件)重新计算其布局。此外,除InvalidateMeasure外,如果大小更改是依赖项属性更改的结果,则可以

我正在制作一个UserControl,它是StackPanel的子控件。当控件的内容更改时,控件的大小也应该更改。UserControl应该如何通知StackPanel(或任何其他容器控件)其大小已更改


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

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

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

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