2016-05-24 6 views
0

ListForTestingに存在するすべてのtestNameをコンボボックスに入れるにはどうすればよいですか?私はcombobox_testType.ItemsSource = ListForTesting.testNameを試しましたが、動作しません。複数のリストアイテムをコンボボックスに追加

public class ManoeuvresID 
{ 
    public string manName { get; set; } 
    public int manID { get; set; } 
} 

public class TestID 
{ 
    public string testName { get; set; } 
    public int ID { get; set; } 
    public IList<ManoeuvresID> manoeuvres { get; set; } 
} 

    HardCodedDatabase.TestID TestObjet = new HardCodedDatabase.TestID(); 
    TestObjet.manoeuvres = new List<HardCodedDatabase.ManoeuvresID>(); 
    HardCodedDatabase.ManoeuvresID man = new HardCodedDatabase.ManoeuvresID(); 
    man.manName="man1"; 
    man.manID = 2; 
    TestObjet.manoeuvres.Add(man); 
    List<HardCodedDatabase.TestID> ListForTesting = new List<HardCodedDatabase.TestID>(); 
    TestObjet.testName = "Steady State"; 
    ListForTesting.Add(TestObjet); 
    TestObjet = new HardCodedDatabase.TestID(); 
    TestObjet.testName = "test2"; 
    ListForTesting.Add(TestObjet); 
    combobox_testType.ItemsSource = ListForTesting; 
+0

ある範囲

comBox.Items.AddRange(ListForTesting); 

を追加します。それは 'testName'です。私はリファレンスタイプについて最初にお読みになることをお勧めします。https://msdn.microsoft.com/en-us/library/t63sy5hs.aspx –

+1

@LayonezWronskey 'TestObjet = new HardCodedDatabase.TestID();' –

+0

には/: –

答えて

2

を使用することですあなたがする必要があるすべてはあなたがItems.AddやItems.AddRangeを使用してアイテムをオブジェクトに追加され

にLINQ
combobox_testType.ItemsSource = ListForTesting.Select(t=>t.testName); 

を試してみました 以下の例

 foreach (var item in ListForTesting) 
      comBox.Items.Add(item); 

は、次にあなたが二回も変更を一覧表示するには、同じオブジェクト `TestObjet`を追加あなたはクラスオブジェクト内のプロパティは、表示するために使用される、設定されていて、キー

 comBox.DisplayMember = "testName"; 
     comBox.ValueMember = "TestId"; 
+0

クリスおかげで。最初のオプションは魅力的に機能し、item.testNameを追加するだけでした。 2番目のオプションに関しては、AddRangeオプションは表示されませんか? – peetman

+0

WPF内のコンボボックスは、winformsとは異なる場合があります。 winformsでComboBoxのAddRangeを取得します。 これを絶対に使用しないでください。未知のブラックボックスを減らす! –

+0

すべてのmanNameをコンボボックスに追加したいのですが? – peetman

1

あなたは別のオプションがDisplayMemberPath

combobox_testType.ItemsSource = ListForTesting; 
combobox_testType.DisplayMemberPath= "testName"; 
+0

コンボボックスにすべてのmanNameを追加したいのですが? – peetman

+0

ManoeuvresIDのリストを使用して同じものをmanNameで選択するか、DisplayMemberPathを設定します。これをTestIDのリストから実行する場合は、 'ListForTesting.SelectMany(t => t.manoeuvres).Select(m = > m.manName) ' – MikeT

+0

cool。これは私が 'combobox_testType.ItemsSource = ListForTesting [0] .manoeuvres.Select(t => t.manName); ' – peetman

関連する問題