WPF DataGrid CheckBox选择所有并获取选定的行

时间:2015-04-08 06:22:10

标签: c# wpf

我在WPF中有一个Datagrid。我添加了一个复选框列,如下所示:

    <DataGridTemplateColumn>
     <DataGridTemplateColumn.Header>
       <CheckBox Name="CheckALL"  IsChecked="{Binding IsCheckedAll, Mode=TwoWay,  UpdateSourceTrigger=PropertyChanged}" />
     </DataGridTemplateColumn.Header>
     <DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
          <CheckBox Name="chkSelect" IsChecked="{Binding IsSelected, Mode=TwoWay,  UpdateSourceTrigger=PropertyChanged}"/>
       </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>

现在,在行中的复选框中触发了属性更改事件,但是我还希望在单击标题复选框时选中所有复选框。

单击“标题”复选框时,在编写如下代码时选中所有复选框:

<DataTemplate>
 <CheckBox Name="chkSelect" IsChecked="{Binding IsChecked, Mode=OneWay, ElementName=CheckALL,  UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>

但同时要获得这两个功能。 请帮帮我

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:

<Checkbox Name="CheckALL">
 <i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectionChanged">
        <i:InvokeCommandAction Command="{Binding CheckColumns}" CommandParameter="{Binding ElementName=hereNameOfGrid}"/>
     </i:EventTrigger>
   </i:Interaction.Triggers>
</Checkbox>

现在你需要在你的代码中使用一个如下命令:

public void CheckColumns(object _grid)
{
        GridView tempGrid = _grid as GridView;

        foreach (var item in tempGrid.Columns)
        {
            item.IsChecked = false;
        }    
}

这样的事情应该有用。这不是有效的代码,只是提示解决方案!