我有一个数据网格,其中第一列包含复选框。我要实现的是,当我检查第一行复选框然后我检查第五行复选框保持按住按钮时,应用程序应检查所选行的所有复选框(即第一行到第五行)。
我正在使用MVVM模式。我在复选框列的顶部有checkall复选框,命令绑定到它。 CheckAll复选框正常工作。单击单个复选框也会执行viewmodel中的命令,该命令检查 - 取消选中所选复选框。 ViewModel的属性绑定到复选框。
我现在要做的与邮件中看到的非常相似(即yahoo,gmail)。复选框应根据键盘上的行选择选中 - 取消选中,使用shift键。如果我遗漏了描述我的问题所需的任何信息,请通知我。
答案 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"
希望这个概念很清楚。
干杯