gpt4 book ai didi

wpf - 如何在 WPF 中折叠星形网格列?

转载 作者:行者123 更新时间:2023-12-04 14:22:08 29 4
gpt4 key购买 nike

通过设置 Width 可以使三列具有相同的宽度至 Auto .

<Grid x:Name="myGrid">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>

<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<Label Grid.Row="0" Grid.Column="0">One</Label>
<Label Grid.Row="0" Grid.Column="1" x:Name="label1">Two</Label>
<Label Grid.Row="0" Grid.Column="2">Three</Label>
</Grid>

我想实现这一点,如果中间列折叠或隐藏,其他两列占用剩余空间并获得相等的宽度。

如果我因为 Width="*"而将 Visibility 设置为 Collapsed 或 Hidden,则其他两列的宽度保持不变。
<Label Grid.Row="0" Grid.Column="1" Visibility="Collapsed">Two</Label>

enter image description here

我通过以编程方式将第二列宽度设置为自动来实现所需的功能,但我正在寻找其他一些解决方案(最好是 xaml 方式之一)。
private void Button_Click(object sender, RoutedEventArgs e)
{
this.myGrid.ColumnDefinitions[1].Width = GridLength.Auto;
this.label1.Visibility = Visibility.Collapsed;
}

最佳答案

我按照 Rob 的建议添加了 Xaml 绑定(bind),如下所示:

<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="{Binding MiddleColumnWidth}" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<Label Grid.Row="0" Grid.Column="0">One</Label>
<Label Grid.Row="0" Grid.Column="1" Visibility="{Binding IsSecondLabelVisible}">Two</Label>
<Label Grid.Row="0" Grid.Column="2">Three</Label>

xaml 背后的代码:
private bool ShowOnlyTwoColumns;

private GridLength MiddleColumnWidth
{
get
{
if (ShowOnlyTwoColumns)
return GridLength.Auto; // Auto collapses the grid column when label is collapsed

return new GridLength(1, GridUnitType.Star);
}
}

private Visibility IsSecondLabelVisible
{
get { return this.ShowOnlyTwoColumns ? Visibility.Collapsed : Visibility.Visible; }
}

关于wpf - 如何在 WPF 中折叠星形网格列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53316277/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com