以编程方式获取当前列的宽度和高度?

问题描述 投票:2回答:3

我正在尝试以编程方式在UserControl中获取网格的宽度和高度。

这是我的XAML网格:

<Grid Name="BallGrid" Background="DarkBlue" Height="auto" Width="auto">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
</Grid>

但是这两个都是:

double width = BallGrid.ColumnDefinitions[0].ActualWidth;
double height = BallGrid.RowDefinitions[0].ActualHeight;

返回0,

和这些

double width = BallGrid.ColumnDefinitions[0].Width.Value;
double height = BallGrid.RowDefinitions[0].Height.Value;

返回都返回1。

我想知道实际宽度,最好用与边距大小相同的单位。如何以编程方式获取这些值?

在ProgessChanged方法中查询列的值,BackgroundWorker每50毫秒调用一次,也许会有区别。

c# wpf xaml grid
3个回答
4
投票

通常,您使用ActualWidth / Height,这些属性有些懒惰:


1
投票

它们在初始化源之后才有效。您可以覆盖OnSourceInitialized以了解何时发生。


0
投票

尝试BallGrid.RenderSize.HeightBallGrid.RenderSize.Width

© www.soinside.com 2019 - 2024. All rights reserved.