UWP:如何在绘画前获取元素大小
UWP: how to get element size before painting
我的代码将绘制一个图形,在绘制事件之前,我需要设置包含该图形的元素的大小。这部分来自 XAML 文件中的一个值:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
</Grid.RowDefinitions>
...
</Grid>
视图初始化时,我希望能够根据其他一些因素修改图形宽度,但我需要高度值,来自XAML。
在一个断点处,我可以查看各种View值,此时ActualHeight
和ActualWidth
仍然是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
...
}
我的代码将绘制一个图形,在绘制事件之前,我需要设置包含该图形的元素的大小。这部分来自 XAML 文件中的一个值:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="35" />
</Grid.RowDefinitions>
...
</Grid>
视图初始化时,我希望能够根据其他一些因素修改图形宽度,但我需要高度值,来自XAML。
在一个断点处,我可以查看各种View值,此时ActualHeight
和ActualWidth
仍然是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
...
}