8,735
社区成员
发帖
与我相关
我的任务
分享
<DataGrid x:Name="Data" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox x:Name="CheckAll" Click="CheckAll_Click"/>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsSelected,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Binding="{Binding Name}"/>
</DataGrid.Columns>
</DataGrid>
List<AAA> list = new List<AAA>();
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
list.Add(new AAA() { Name = "AAA" + i });
}
Data.ItemsSource = list;
}
public class AAA : INotifyPropertyChanged
{
private bool isSelected = false;
public bool IsSelected
{
get { return isSelected; }
set { isSelected = value; GetChanged("IsSelected"); }
}
private string name;
public string Name
{
get { return name; }
set { name = value; GetChanged("Name"); }
}
public event PropertyChangedEventHandler PropertyChanged;
private void GetChanged(string Name)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(Name));
}
}
}
private void CheckAll_Click(object sender, RoutedEventArgs e)
{
foreach (var item in list)
{
item.IsSelected = !item.IsSelected;
}
}
List<AAA> SelectedList = list.Where(a => a.IsSelected).ToList();
<DataGridTemplateColumn Header="选择">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Checked="CheckBox_Checked" Tag="{Binding Path= Id}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
这个是XAML 的
private void CheckBox_Checked(object sender, RoutedEventArgs e)
{
CheckBox dg = sender as CheckBox;
long Id = long.Parse(dg.Tag.ToString()); //获取该行的FID
var bl = dg.IsChecked;
if (bl == true)
{
selectRunNO.Add(Id); //如果选中就保存FID
}
else
{
selectRunNO.Remove(Id); //如果选中取消就删除里面的FID
}
}
全选 的代码该怎么实现呢?