我有一种情况,我有多个网格中的按钮,并要求所有按钮的大小相同.我试图使用Grid.IsSharedSizeScope但是没有成功.
最终布局应如下图所示,但所有按钮的大小应相同.
XAML目前看起来像这样.有谁看到我哪里出错了?
<UserControl x:Class="UserControls.UserControl2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"> <Grid Grid.IsSharedSizeScope="True"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <GroupBox Grid.Row="0" Grid.Column="0" Header="Header 1" Grid.IsSharedSizeScope="True"> <Grid Grid.IsSharedSizeScope="True"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> </Grid.ColumnDefinitions> <Button Content="A" Grid.Row="0" Grid.Column="0" Margin="2" /> <Button Content="B" Grid.Row="0" Grid.Column="1" Margin="2" /> <Button Content="C" Grid.Row="0" Grid.Column="2" Margin="2" /> </Grid> </GroupBox> <GroupBox Grid.Row="1" Grid.Column="0" Header="Header 2" Grid.IsSharedSizeScope="True"> <Grid Grid.IsSharedSizeScope="True"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> </Grid.ColumnDefinitions> <Button Content="AA" Grid.Row="0" Grid.Column="0" Margin="2" /> <Button Content="BB" Grid.Row="0" Grid.Column="1" Margin="2" /> </Grid> </GroupBox> </Grid>
解决方法
仅将Grid.IsSharedSizeScope应用于顶级容器.参考下面的代码.
<Grid Grid.IsSharedSizeScope="True"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <GroupBox Grid.Row="0" Grid.Column="0" Header="Header 1" > <Grid > <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> </Grid.ColumnDefinitions> <Button Content="A" Grid.Row="0" Grid.Column="0" Margin="2" /> <Button Content="B" Grid.Row="0" Grid.Column="1" Margin="2" /> <Button Content="C" Grid.Row="0" Grid.Column="2" Margin="2" /> </Grid> </GroupBox> <GroupBox Grid.Row="1" Grid.Column="0" Header="Header 2" > <Grid > <Grid.RowDefinitions> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> <ColumnDefinition Width="Auto" SharedSizeGroup="Button" /> </Grid.ColumnDefinitions> <Button Content="AA" Grid.Row="0" Grid.Column="0" Margin="2" /> <Button Content="BB" Grid.Row="0" Grid.Column="1" Margin="2" /> </Grid> </GroupBox> </Grid>