【发布时间】:2021-12-03 05:47:37
【问题描述】:
我有以下 xaml:
<Window x:Class="SharedSizeGroupBug.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
</Window.Resources>
<StackPanel Grid.IsSharedSizeScope="True">
<ToggleButton IsChecked="False" Name="TB" Content="Toggle" />
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="DZG" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="A1" Width="100" />
<TextBlock Text="A2" Grid.Column="1" />
</Grid>
<Grid Visibility="{Binding IsChecked, ElementName=TB, Converter={StaticResource BooleanToVisibilityConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="DZG" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Text="B1" Width="200" />
<TextBlock Text="B2" Grid.Column="1" />
</Grid>
</StackPanel>
</Window>
当您尝试此操作时,第一列的初始状态为 100 宽。当按下按钮并且第二个网格可见时,第一列的宽度为 200。但是,当您再次按下该按钮时,该列仍将是 200 宽。
【问题讨论】:
-
当你说“仍然是 100 宽”时,你的意思是它仍然是 200 宽吗?
-
是的,我就是这个意思,已编辑
-
是的,折叠时似乎不会重新测量列。但是当 Grid 的可见性设置为 hidden 时它会这样做。