views:

249

answers:

1

Hello, I have this piece of XAML code:

<Window x:Class="SizingTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>
     <Label x:Name="theLabel" Width="Auto">A very large label with a lot of text</Label>
    </Grid>
</Window>

In the code behind, I'm trying to get the label's actual width, I thought

theLabel.ActualWidth

would do the trick, but after trying this code:

public Window1()
{
 InitializeComponent();
 double width = theLabel.ActualWidth;
}

The value of width is 0, I also checked with theLabel.Width, which returns NaN, theLabel.DesiredSize.Width, which also return 0. What can I use to find the real width of the label?

Thank you.

+3  A: 

ActualWidth isn't set until the component's parents (and possible children) are laid out.

To get a components ActualWidth you'll need to wait for a layout pass to complete. Listen to the Loaded event, as its not called until after the first layout pass.

Kevin Montrose