<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="5" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid x:Name="DtgEntity" Grid.Row="0" ItemsSource="{Binding Entities, Mode=TwoWay}" AutoGenerateColumns="False" ></DataGrid>
<GroupBox Header="Selected Entities" Grid.Row="2" >
<DataGrid x:Name="DtgSelectedEntity" ItemsSource="{Binding SelectedEntities, Mode=TwoWay}" ></DataGrid>
</GroupBox>
</Grid>
这是我的网格控制代码。列名,列数根据对象类型更改。所以我 无法指定网格列标记 。但是网格的第一列总是复选框。
如何将第一个列标题更改为复选框。我想为网格的第一列实现select all选项。
答案 0 :(得分:1)
根据对象类型更改列数。所以在这里我不能指定网格列标记
为什么不呢?您可以使用Columns
指定DataGridCheckBoxColumn
标记,并将AutoGenerateColumns
设置为true,以根据对象类型生成列。这意味着复选框列始终为apear,其余列将由绑定的ItemsSource
类型生成
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="5" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid x:Name="DtgEntity" Grid.Row="0" ItemsSource="{Binding Entities, Mode=TwoWay}" AutoGenerateColumns="False" ></DataGrid>
<GroupBox Header="Selected Entities" Grid.Row="2" >
<DataGrid x:Name="DtgSelectedEntity" ItemsSource="{Binding SelectedEntities, Mode=TwoWay}" AutoGenerateColumns="True" >
<DataGrid.Columns>
<DataGridCheckBoxColumn x:Name="myCheckBoxColumn"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
</Grid>
您还可以将FrozenColumnCount
的{{1}}属性设置为1,以使该列永久滚动。
至于select all功能,SO上有很多线程可以解决这个问题。这里有几个:
How to Select All CheckBox of a Column by DataGrid Header CheckBox in WPF DataGrid
c# code for select all checkbox in wpf datagrid
希望这有帮助