如何在不破坏网格星号的情况下在代码中设置 width/height?
How to set width/height in code without breaking Grid star-size?
我有一些像这样的 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;
}
点击按钮前显示如下:
点击按钮后将window拖大一点,看起来像这样:
所以我的问题是,在单击按钮之前,如果您将 window 拖到星形大小作品周围并在 window 调整大小时调整两个 top/bottom 网格的大小,但是在单击设置 g1 宽度和高度的按钮,它打破了星号调整。设置宽度和高度后,如何让星形调整再次起作用?
提前致谢。
how do i bring the star-sizing back to work again after set the width and height?
设置网格的宽度和高度后 g1
,您打破了自动调整星形尺寸。但是您可以使用 Window.SizeChanged 事件来监视应用程序 window 视图的大小变化。当window大小改变时,自行为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;
}
我有一些像这样的 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;
}
点击按钮前显示如下:
点击按钮后将window拖大一点,看起来像这样:
所以我的问题是,在单击按钮之前,如果您将 window 拖到星形大小作品周围并在 window 调整大小时调整两个 top/bottom 网格的大小,但是在单击设置 g1 宽度和高度的按钮,它打破了星号调整。设置宽度和高度后,如何让星形调整再次起作用?
提前致谢。
how do i bring the star-sizing back to work again after set the width and height?
设置网格的宽度和高度后 g1
,您打破了自动调整星形尺寸。但是您可以使用 Window.SizeChanged 事件来监视应用程序 window 视图的大小变化。当window大小改变时,自行为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;
}