WPF:折叠第二列内容时,DataGrid 不会扩展以占据 Grid 的两列
WPF: DataGrid not expanding to occupy both columns of Grid when second column content is collapsed
我有一个包含两列的网格,第一列有一个 DataGrid,第二列有另一个网格。当第二个网格的可见性设置为 'collapsed' 时,我希望 DataGrid 扩展到完整 space。
以下是代码片段:
<Grid Grid.Row="1" HorizontalAlignment="Left" Width="344">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="24"/>
</Grid.ColumnDefinitions>
<DataGrid MaxWidth="344" Grid.Column="0" SelectedItem="{Binding Dummy, Mode=TwoWay}" Background="DarkGray"
ItemsSource="{Binding DummyList}" SelectionMode="Single" AutoGenerateColumns="False" RowHeaderWidth="0" GridLinesVisibility="All">
<DataGrid.Columns>
<DataGridTemplateColumn Header="" Width="35">
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="" Width="*" MinWidth="85">
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="" Width="*" MinWidth="90" >
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="" Width="*" MinWidth="80">
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="" Width="*" MaxWidth="25" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Grid Grid.Column="1" Margin="0,1,0,0" Background="DarkGray" Visibility="Collpased">
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
</Grid>
</Grid>
即使我将第二列中的 Grid 可见性设置为折叠,DataGrid 也不会占据整个 space,第二列仍然是空的。我是否有错误的期望,如果 yes/no,我怎样才能实现这种行为?
第二列具有固定宽度 <ColumnDefinition Width="24"/>
,即使它不包含子元素(如果它们已折叠)。
将宽度更改为自动 <ColumnDefinition Width="Auto"/>
并为子网格提供必要的宽度:<Grid Grid.Column="1" Width="24"
。然后列将对内容可见性做出反应
我有一个包含两列的网格,第一列有一个 DataGrid,第二列有另一个网格。当第二个网格的可见性设置为 'collapsed' 时,我希望 DataGrid 扩展到完整 space。 以下是代码片段:
<Grid Grid.Row="1" HorizontalAlignment="Left" Width="344">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="24"/>
</Grid.ColumnDefinitions>
<DataGrid MaxWidth="344" Grid.Column="0" SelectedItem="{Binding Dummy, Mode=TwoWay}" Background="DarkGray"
ItemsSource="{Binding DummyList}" SelectionMode="Single" AutoGenerateColumns="False" RowHeaderWidth="0" GridLinesVisibility="All">
<DataGrid.Columns>
<DataGridTemplateColumn Header="" Width="35">
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="" Width="*" MinWidth="85">
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="" Width="*" MinWidth="90" >
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="" Width="*" MinWidth="80">
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="" Width="*" MaxWidth="25" Visibility="Collapsed">
<DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
<Grid Grid.Column="1" Margin="0,1,0,0" Background="DarkGray" Visibility="Collpased">
<Grid.RowDefinitions>
<RowDefinition Height="25"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
</Grid>
</Grid>
即使我将第二列中的 Grid 可见性设置为折叠,DataGrid 也不会占据整个 space,第二列仍然是空的。我是否有错误的期望,如果 yes/no,我怎样才能实现这种行为?
第二列具有固定宽度 <ColumnDefinition Width="24"/>
,即使它不包含子元素(如果它们已折叠)。
将宽度更改为自动 <ColumnDefinition Width="Auto"/>
并为子网格提供必要的宽度:<Grid Grid.Column="1" Width="24"
。然后列将对内容可见性做出反应