使用窗口的SizeToContent="WidthAndHeight"
属性似乎破坏了网格的列和行定义的属性SharedSizeGroup
。
<Window x:Class="SizeTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="MainWindow"
SizeToContent="WidthAndHeight">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" SharedSizeGroup="MainColumnWidth" />
<ColumnDefinition Width="*" SharedSizeGroup="MainColumnWidth" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" SharedSizeGroup="MainRowHeight" />
<RowDefinition Height="*" SharedSizeGroup="MainRowHeight" />
</Grid.RowDefinitions>
<Border BorderThickness="1" BorderBrush="Black" Grid.Column="0" Grid.Row="0" >
<Button Width="100" Height="100" Margin="10" Content="A" />
</Border>
<Border BorderThickness="1" BorderBrush="Black" Grid.Column="1" Grid.Row="0" >
<Button Width="100" Height="200" Margin="10" Content="B" />
</Border>
<Border BorderThickness="1" BorderBrush="Black" Grid.Column="0" Grid.Row="1" >
<Button Width="200" Height="100" Margin="10" Content="C" />
</Border>
<Border BorderThickness="1" BorderBrush="Black" Grid.Column="1" Grid.Row="1" >
<Button Width="100" Height="100" Margin="10" Content="D" />
</Border>
</Grid>
</Window>
例如,上面的代码产生以下内容:
但是,我希望它产生类似于
它根据组件调整大小但尊重共享组大小。
调整大小会立即应用共享组大小,但是您必须手动猜测正确的大小在哪里。
有没有什么办法解决这一问题?
如果有什么不同,我使用的是 .NET 5。
编辑
添加Grid.IsSharedSizeScope="True"
到窗口或网格最初似乎可以解决问题,但在调整窗口大小时,网格不再填满窗口。
我怀疑正在发生的事情是,IsSharedSizeScope
由于 Column / Row 定义说 width / height 是,但如果没有,列/行的大小仅相同,*
但是当IsSharedSizeScope
为 true 时,共享大小范围生效,但由于某种原因停止网格在有空间增长时调整大小。