如何在不破坏网格星号的情况下在代码中设置宽度/高度?

时间:2016-10-30 04:48:24

标签: c# windows-runtime uwp win-universal-app uwp-xaml

我有一些像这样的XAML代码:

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

        <Grid x:Name="g1" Grid.Row="0" Background="Pink"/>
        <Grid x:Name="g2" Grid.Row="1" Background="Green"/>
    </Grid>
</ScrollViewer>

<Button Content="Update Size" Width="150" Height="50" Click="Button_Click" Margin="105,342,0,248"/>

和代码背后:

private void Button_Click(object sender, RoutedEventArgs e)
{
    g1.Width = mainGrid.ActualWidth;
    g1.Height = mainGrid.ActualHeight / 2;
}

在点击按钮之前显示:

enter image description here

单击按钮并将窗口拖动到更大的位置后,它看起来像这样:

enter image description here

所以我的问题是,在点击按钮之前,如果你在星形尺寸工作周围拖动窗口并在窗口调整大小时调整顶部/底部网格的大小,但是在点击设置g1宽度和高度的按钮后,它会打破星形-浆纱。在设定宽度和高度后,如何让星形尺寸再次恢复工作?

提前感谢。

1 个答案:

答案 0 :(得分:1)

  

如何在设置宽度和高度后再将星形尺寸恢复工作?

设置网格g1的宽度和高度后,您打破了自动星形大小。但您可以使用Window.SizeChanged事件来监视应用程序窗口视图的大小更改。当窗口大小发生变化时,请自行动态设置g1的新高度和宽度以适合父控件mainGrid

以下代码将满足您当前的要求。

 public Strangelaout()
 {
     this.InitializeComponent();
     Window.Current.SizeChanged += Current_SizeChanged;
 }

 private void Current_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
 {
     g1.Width = mainGrid.ActualWidth;
     g1.Height = mainGrid.ActualHeight / 2;
 }

 private void Button_Click(object sender, RoutedEventArgs e)
 {
     g1.Width = mainGrid.ActualWidth;
     g1.Height = mainGrid.ActualHeight / 2;
 }