UWP:如何在绘画前获取元素大小

UWP: how to get element size before painting

我的代码将绘制一个图形,在绘制事件之前,我需要设置包含该图形的元素的大小。这部分来自 XAML 文件中的一个值:

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition Height="35" />
  </Grid.RowDefinitions>
  ...
</Grid>

视图初始化时,我希望能够根据其他一些因素修改图形宽度,但我需要高度值,来自XAML。

在一个断点处,我可以查看各种View值,此时ActualHeightActualWidth仍然是0。我看不出还有什么可以用的。

在绘画之前还有其他我可以使用的事件吗?

答案是使用 SizeChanged 事件。

在XAML中,例如:

<skia:SKXamlCanvas 
  x:Name="EICanvas" 
  SizeChanged="OnSizeChanged" />

在代码隐藏中:

private void OnSizeChanged (Object sender, SizeChangedEventArgs e)
{
  var newH = e.NewSize.Height;
  var oldH = this.ActualHeight; // in pixels
  ...
}