1、xmal页面
<sdk:DataGrid Grid.Row="1" MinHeight="300" ItemsSource="{Binding List}" SelectedItem="{Binding Selected,Mode=TwoWay}">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn HeaderStyle="{StaticResource Header}" IsReadOnly="True">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected,Mode=TwoWay}" HorizontalAlignment="Center" VerticalContentAlignment="Center"/>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
2、viewModel
private bool _isSelectAll;
public bool IsSelectAll
{
get
{
return this._isSelectAll;
}
set
{
if (this._isSelectAll != value)
{
this._isSelectAll = value;
}
OnPropertyChange("IsSelectAll");
}
}
public ICommand SelectAllCommand
{
get
{
return new DelegateCommand<bool?>(delegate(bool? isChecked)
{
if (isChecked == null || this.List == null) return;
foreach (vm item in this.List)
{
item.IsSelected = isChecked.Value;
}
});
}
}
public bool IsSelectAll
{
get
{
return this._isSelectAll;
}
set
{
if (this._isSelectAll != value)
{
this._isSelectAll = value;
}
OnPropertyChange("IsSelectAll");
}
}
public ICommand SelectAllCommand
{
get
{
return new DelegateCommand<bool?>(delegate(bool? isChecked)
{
if (isChecked == null || this.List == null) return;
foreach (vm item in this.List)
{
item.IsSelected = isChecked.Value;
}
});
}
}
private void SelectChanged(object sender, bool isSelect)
{
if (isSelect)
{
if (this.SysConfigList == null) return;
bool isAllSelected = true;
foreach (vm item in this.List)
{
isAllSelected &= item.IsSelected;
}
this.IsSelectAll = isAllSelected;
}
else
{
this.IsSelectAll = false;
}
{
if (isSelect)
{
if (this.SysConfigList == null) return;
bool isAllSelected = true;
foreach (vm item in this.List)
{
isAllSelected &= item.IsSelected;
}
this.IsSelectAll = isAllSelected;
}
else
{
this.IsSelectAll = false;
}
this.List.BindingSelect(SelectChanged);