【问题标题】:WPF DataGrid CheckBox Select All And Get Selected RowsWPF DataGrid CheckBox 全选并获取选定的行
【发布时间】:2015-06-12 23:32:29
【问题描述】:

我在 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>

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

【问题讨论】:

标签: c# wpf


【解决方案1】:

试试这样的:

<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;
        }    
}

类似的东西应该可以。这不是工作代码,它只是一个解决方案的提示!

【讨论】:

  • xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
猜你喜欢
  • 2010-12-02
  • 2020-12-14
  • 2016-10-13
  • 2011-04-24
  • 2016-08-11
  • 2014-07-14
  • 2019-02-14
  • 1970-01-01
相关资源
最近更新 更多