我正在做一個UserPanel,它是一個StackPanel的子節點。當內容發生變化時,控件的大小也應該改變。 UserControl應該如何通知StackPanel(或任何其他容器控件)它的大小已更改?如何通知容器控件子控件已更改大小?
例如,如果您有一個Label控件並更改了內容元素,那麼它將被調整大小。它是如何做到的?
我正在做一個UserPanel,它是一個StackPanel的子節點。當內容發生變化時,控件的大小也應該改變。 UserControl應該如何通知StackPanel(或任何其他容器控件)它的大小已更改?如何通知容器控件子控件已更改大小?
例如,如果您有一個Label控件並更改了內容元素,那麼它將被調整大小。它是如何做到的?
調用InvalidateMeasure()。這會導致StackPanel(或其他容器控件)重新計算其佈局。
此外,除了InvalidateMeasure,如果在尺寸上的變化是一個依賴屬性的變化,你可以設置FrameworkPropertyMetadata.AffectsMeasure標誌結果:
public static DependencyProperty ToolbarProperty =
DependencyProperty.Register("Toolbar", typeof(UIElement),
typeof(EditorWindow),
new FrameworkPropertyMetadata(null,FrameworkPropertyMetadataOptions.AffectsArrange|
FrameworkPropertyMetadataOptions.AffectsMeasure|FrameworkPropertyMetadataOptions.AffectsRender));