WPF MVVM-复选框全选/反选

<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>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值