<DataGrid
Style="{StaticResource dg_style}"
Margin="10"
Name="grid"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
ColumnHeaderHeight="30"
VerticalAlignment="Center"
HorizontalAlignment="Center" ItemsSource="{Binding UserSource}"
GridLinesVisibility="Horizontal"
IsReadOnly="True" >
<!-- 选中行数据 -->
<inter:Interaction.Triggers>
<inter:EventTrigger EventName="SelectionChanged">
<inter:InvokeCommandAction Command="{Binding selectionChanged}" CommandParameter="{Binding ElementName=grid}"></inter:InvokeCommandAction>
</inter:EventTrigger>
</inter:Interaction.Triggers>
<DataGrid.Columns>
<DataGridTemplateColumn Width="*" >
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate x:Name="dtAllChkBx">
<!-- 如果明确知道数据源的Name,就能用Source或者ElementName进行绑定,但是有时候我们需要绑定的数据源可能没有明确的Name,此时我们就需要利用Bingding的RelativeSource进行绑定,这种办法的意思是指当前元素和绑定源的位置关系。 -->
<CheckBox Name="cbxAll" Content="全选" IsChecked="{Binding Path=DataContext.IsAllSelected,RelativeSource={RelativeSource FindAncestor,AncestorType=DataGrid}}">
<inter:Interaction.Triggers>
<inter:EventTrigger EventName="Click">
<inter:InvokeCommandAction Command="{Binding DataContext.SelectAllCommand,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding IsAllSelected}"></inter:InvokeCommandAction>
</inter:EventTrigger>
</inter:Interaction.Triggers>
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DockPanel>
<CheckBox IsChecked="{Binding Selected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<inter:Interaction.Triggers>
<inter:EventTrigger EventName="Click">
<inter:InvokeCommandAction Command="{Binding DataContext.IsCheckAll,RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding Selected}"></inter:InvokeCommandAction>
</inter:EventTrigger>
</inter:Interaction.Triggers>
</CheckBox>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="*" Header="序号" Binding="{Binding ID}" />
<DataGridTextColumn Width="*" Header="用户名称" Binding="{Binding UserName}" />
<DataGridTextColumn Width="*" Header="用户密码" Binding="{Binding UserPwd}" />
<DataGridTemplateColumn Width="*" Header="编辑">
<!-- 删除行数据 -->
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="删除" Width="50" Command="{Binding DataContext.btn_RemoveAtClounms,RelativeSource= {RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}" CommandParameter="{Binding ID}"></Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
WPF MVVM-复选框全选/反选
于 2023-07-07 09:41:54 首次发布