0

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

我正在使用 MVVM 模式。我在复选框列的顶部有 checkall 复选框,并且命令绑定到它。CheckAll 复选框工作正常。单击单个复选框还会从视图模型执行命令,该命令选中-取消选中选中的复选框。ViewModel 的属性绑定到复选框。

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

4

1 回答 1

0

是的可能。

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

将此设置为SelectionMode = EXTENDED,

下一个->

使用这种代码检查所有复选框为真。

最好为您加载的数据创建一个类。使它干净和容易。如果您使用 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"

希望概念清晰。

干杯

于 2012-09-07T21:32:44.440 回答