如何读取面积"Grid"的大小?或者如何将数据从 XAML 获取到 C++/CX 代码中?



我正在使用区域"网格"的动态标记

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
    <!--This Grid-->
    <Grid Grid.Column="0" Name="gridImage" SizeChanged="gridImage_SizeChanged">
        <Image Name="image" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Grid>     
</Grid>

在我的代码中,我正在根据包含此图像的"网格"的大小逐像素绘制图像。如何在代码中读取"网格"区域的大小?

属性 gridImage->Width 和 gridImage->Height 允许我设置值,但不能获取它们。

gridImage->Width = 100;//OK
gridImage->Height = 100;//OK
int width = gridImage->Width;//return -2 147 483 648
int height = gridImage->Height;//return -2 147 483 648

如果我对网格区域使用 SizeChanged 事件,那么我可以使用此代码读取大小

void MainPage::gridImage_SizeChanged(Platform::Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e)
{
    Size size = e->NewSize;
    int width = size.Width;//OK
    int height= size.Height;//OK
}

但是此事件仅在更改图像对象后才可用,这意味着在那之后我需要它。

使用 ActualWidth 和 ActualHeight 属性分别获取实际宽度和高度(以像素为单位)。与高度,宽度,最小高度,最小宽度,最大高度和最大宽度不同,它们实际上包含高度和宽度。

最新更新