检查DataGrid中所选行的复选框

时间:2012-09-07 11:59:13

标签: silverlight-5.0

我有一个数据网格,其中第一列包含复选框。我要实现的是,当我检查第一行复选框然后我检查第五行复选框保持按住按钮时,应用程序应检查所选行的所有复选框(即第一行到第五行)。

我正在使用MVVM模式。我在复选框列的顶部有checkall复选框,命令绑定到它。 CheckAll复选框正常工作。单击单个复选框也会执行viewmodel中的命令,该命令检查 - 取消选中所选复选框。 ViewModel的属性绑定到复选框。

我现在要做的与邮件中看到的非常相似(即yahoo,gmail)。复选框应根据键盘上的行选择选中 - 取消选中,使用shift键。如果我遗漏了描述我的问题所需的任何信息,请通知我。

1 个答案:

答案 0 :(得分:0)

是的。

在您使用的Datagrid中有一个名为SELECETIONMODE的属性。

将此设置为SelectionMode = EXTENDED

下一步 - >

使用此类代码检查所有复选框是否为true。

最好创建一个加载数据类。使它干净简单。 如果您使用RIA服务加载数据并将其绑定到您已经排序的数据网格..:)

我会高度推荐这一列,而不是使用列号。

private void refreshDatagrid()
{

ObservableCollection<Cars> c = --Load all your cars----;
this.mydatagrid.ItemsSource = c;
}

---To Check all the boxes
private void checkAllBoxes_Click(object sender, RoutedEventArgs e)
        {
            if (this.mydatagrid.SelectedItems != null)
            {
                foreach (Cars c in this.mydatagrid.SelectedItems)
                {
                    if (c.isSelected != true)
                    {
                        ula.Approved = true;
                    }
                }
            }
        }

--Example Object Class
class Cars {

   public Cars(){}

   public Nullable<bool> isSelected {get;set;}

   public string carName {get;set;}

   public string LicenseNumber {get;set;}

   public string year {get;set;}

   public string model {get;set;}    

}

当然最后使用Click="checkAllBoxes_Click"

在前端创建一个按钮

希望这个概念很清楚。

干杯