WPF DataGrid控件选择所有选项

时间:2016-03-01 04:27:21

标签: c# wpf datagrid

<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选项。

1 个答案:

答案 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上有很多线程可以解决这个问题。这里有几个:

Datagrid Column header should check / uncheck CheckBox’s state depending upon whether all CheckBoxes of a DataGridView column are checked or unchecked

How to Select All CheckBox of a Column by DataGrid Header CheckBox in WPF DataGrid

c# code for select all checkbox in wpf datagrid

希望这有帮助