基本上我将Person列表绑定到silverlight datagrid,第一行是id 1的主要Person,每列都有一个复选框,默认情况下它们都是为主要人员检查的。没有检查第二行等等,情况是如果用户不想要默认值,那么他们可以检查来自其他人的其他列,但是一旦他们检查它们,主要人员应该自动取消选中反之亦然,这仅适用于同一列。示例列1是Age,第2列是Name,然后默认是为主要人员检查它们,如果我不喜欢该数据,我可以从任何其他人检查Age,这将从主要人员中取消选中Age。我正在将复选框绑定到bool值。所以,我需要一个方法来获取捕获的行id和已检查的属性的名称。
List<Person> l = new List<Person>();
l.Add(new Person() { Id = 1, Age = 20, IsFirstNameSelected = false, IsLastNameSelected = false });
l.Add(new Person() { Id = 2, Age = 28, IsFirstNameSelected = true, IsLastNameSelected = true });
l.Add(new Person() { Id = 3, Age = 22, IsFirstNameSelected = true, IsLastNameSelected = true });
答案 0 :(得分:0)
l.ForEach(p=> {if (p!= l.First()
{p.IsFirstNameSelected = !l.First().IsFirstNameSelected }
});
那样的东西?
我刚刚检查过该对象是否是第一个,但您也可以应用其他条件。
答案 1 :(得分:0)
我不确定我是否正确理解了这个问题,但是如果你的意思是指对于指定的人ID,你想要更新IsLastNameSelected
和IsFirstNameSelected
的属性以使相应的属性为负数如果指定的人员ID,则执行此操作:
int id = 1;
IEnumerable<Person> updatedList =
l.Select( person => new Person()
{
Id = person.Id,
Age = person.Age,
IsFirstNameSelected = person.Id == id ? person.IsFirstNameSelected : !(l.Single( p => p.Id == id).IsFirstNameSelected),
IsLastNameSelected = person.Id == id ? person.IsLastNameSelected : !(l.Single( p => p.Id == id).IsLastNameSelected),
});