WPF控制实际大小

时间:2009-07-16 01:32:00

标签: wpf wpf-controls size

我有这段XAML代码:

<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>

在后面的代码中,我想要获得标签的实际宽度,我想

theLabel.ActualWidth

可以解决问题,但在尝试此代码之后:

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

width的值为0,我还检查了Label.Width,它返回NaN,theLabel.DesiredSize.Width,它也返回0.我可以用什么来查找标签的实际宽度?

谢谢。

1 个答案:

答案 0 :(得分:12)

在组件的父项(和可能的子项)布局之前,

ActualWidth未设置。

要获取组件ActualWidth,您需要等待布局传递完成。收听Loaded事件,因为直到第一次布局通过后才会调用它。