2012-02-17 4 views
1

基本的に私はSilverlight DataGridにPersonのリストをバインドしています。最初の行はid 1のプライマリPersonです。各カラムにチェックボックスがあり、デフォルトではすべてプライマリの人物がチェックされます。 2番目の行などは何もチェックされていませんが、ユーザーがデフォルト値を必要としない場合、他の人の他の列をチェックできますが、チェックするとすぐにプライマリの人物が自動的にチェックされなくなります逆の場合もあります。これは同じ列の場合のみです。例列1はAgeで、列2はNameです。デフォルトでは、そのデータが好きではない場合、プライマリPersonからチェックされます。AgeをプライマリPersonからAgeをオフにする他の人からチェックできます。そして、私はチェックボックスを自分でbool値にバインドしています。したがって、取得した行IDとチェックされたプロパティのNameを取り込むメソッドが必要です。LINQを使用してオブジェクトのリストを更新

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

あなたの質問は何ですか?あなたの説明は私に混乱しています;-) – BrokenGlass

+0

@BrokenGlass私はより多くの説明で私の質問を編集しました。返信ありがとう。 – user282807

答えて

0

私は質問を正しく理解しているかどうかはわかりませんが、特定の人物IDについて、特定の人物IDの対応するプロパティの否定を持つようにIsLastNameSelectedIsFirstNameSelectedのプロパティを更新することを意味する場合は、これを行います:

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),    
    }); 
+0

私は説明で私の質問を編集しました。あなたの返信はIDのみを取ります。私はIDとboolプロパティの名前を取るメソッドが必要です。私の例は2つしか示していませんが、実際には20個以上あります。 – user282807

0
l.ForEach(p=> {if (p!= l.First() 
        {p.IsFirstNameSelected = !l.First().IsFirstNameSelected } 
       }); 

そのような何か?

オブジェクトが最初のものかどうかをチェックしただけですが、他の条件も適用できます。

関連する問題