我正在尝试以编程方式在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毫秒调用一次,也许会有区别。
通常,您使用ActualWidth
/ Height
,这些属性有些懒惰:
它们在初始化源之后才有效。您可以覆盖OnSourceInitialized
以了解何时发生。
尝试BallGrid.RenderSize.Height
和BallGrid.RenderSize.Width