ActualWidth和ActualWidth为0

时间:2016-03-14 08:55:31

标签: xaml silverlight windows-phone-8

首先,我已经阅读了所有建议的#34;可能已经有你答案的问题",所以我相信这不是一个公告。

我在网页上有这个网格:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="70"/>
    </Grid.RowDefinitions>

    <!--TitlePanel contains the name of the application and page title-->
    <StackPanel Grid.Row="0" Margin="12,17,0,28">
        <TextBlock Text="Please sign below." Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
    </StackPanel>

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <Image x:Name="SignImage" />
    </Grid>
    <Grid Background="Transparent" Grid.Row="2" Margin="12,0,10,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="120"/>
            <ColumnDefinition Width="120"/>
            <ColumnDefinition Width="10"/>
        </Grid.ColumnDefinitions>

        <Button x:Name="ClearButton" Content="Clear" Grid.Column="1"/>
        <Button x:Name="OkButton" Content="Ok" Grid.Column="2"/>
    </Grid>
</Grid>

然后这个CodeBehind:

public MainPage()
{
    InitializeComponent();
    this.Loaded += MainPage_Loaded;
    // Sample code to localize the ApplicationBar
    //BuildLocalizedApplicationBar();
}

...

private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
  MessageBox.Show($"SignImage.ActualWidth: {SignImage.ActualWidth}, SignImage.ActualWidth: {SignImage.ActualWidth} ");
}

问题是我的Image大小为0(零)。

如何让我的图像填写我已放入的单元格?

1 个答案:

答案 0 :(得分:0)

首先,*和Auto之间存在差异。请检查主网格的大小。 &#34; *&#34;表示拉伸以填充可用空间,并且是一个分数,因此如果一行是*而另一行是2 *,那么第二行将是第一行的两倍。

自动意味着它需要所需的任何空间。

如果您将整个网格的大小设置为较小的高度,则会出现问题。为主网格组件设置MinHeight。

其次,您没有为 SignImage 设置图像,其大小意味着您显然会将ActualWidth和ActualHeight设置为零。图像标记为空,其中未设置Source。

<Image x:Name="SignImage" Source="C:\Users\Administrator\Pictures\user-thumbnail.png"/>

如果您获得ActualWidth和ActualHeight

,请在设置图像源后进行检查

看看这张图片我写了你的代码。您可以看到,对于网格0和2,为网格1设置了高度,因为您已为其编写*,因此没有设置高度,因此必须将高度设置为父级。 enter image description here

现在看看这个图像我已经将父元素的高度设置为200,因此您可以看到Gird 1可见且高度不是0。 enter image description here

因此有必要设置高度或将高度的图像源设置为不为零。