【发布时间】:2021-04-15 00:23:12
【问题描述】:
使用窗口的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,列/行的大小仅相同,因为列/行定义说宽度/高度是*,但是当IsSharedSizeScope 为真时,那么共享大小范围生效,但由于某种原因,当网格有增长空间时停止调整大小。
【问题讨论】:
标签: c# wpf xaml sharedsizegroup issharedsizescope