September 29, 2014 1 Comment
When a panel is laying out its children, it will respect (make use of) an explicit size specified for a child control.
In the example below, the MyLabel control specifies a width of 100. This makes it wider than it would normally be to fit its content.
<StackPanel Margin="5" Background="Honeydew"> <loc:MyLabel Content="Billy" HorizontalAlignment="Center" Width="100" Background="Thistle" /> </StackPanel>
- StackPanel reads the label’s desired width of 100, using this value as the “constrained” width (target width)
- StackPanel calls Measure on the label, with constrained width of 100 and height of Infinity
- Label returns a size from MeasureOverride with width and height equal to what’s required for its content (31.4 wide x 26 high)
- StackPanel calls Arrange on MyLabel, passing in a size that includes the explicit width (100 x 26)