2016-11-18 36 views
0

在我的項目中,我使用鍵值對stringelementId作出列表。製作列表的原因是因爲我想在代碼中稍後將所有項目添加到checkedListBoxc#多列列校驗列表框中的KeyValuePair列表

List<KeyValuePair<string, ElementId>> kvPairs = new List<KeyValuePair<string, ElementId>>(); 

當我有我的元素集合,我加入元素名稱和元素ID爲鍵值對:

foreach (Element viewElement in viewCollector) 
{ 
    kvPairs.Add(new KeyValuePair<string, ElementId>(viewElement.Name, viewElement.Id)); 
} 

我想接下來的事情,就是添加這些關鍵-value配對到checkedListBox,其中名稱被添加到elementId的單獨列中。

但我似乎無法找到在哪裏/如何添加第二列。在checkedListBox.Items.Add()中似乎沒有超載方法來寫入多個列。

編輯:

使用WinForms。

而且整個checkedListBox.MultiColumn似乎沒有意義,如果沒有辦法定義列。我真的很困惑。

+0

Winforms,WPF,...? – Jim

+0

@Jim對不起,使用Winforms – Dante1986

+1

這不能用'CheckedListBox'完成,可以考慮使用* DataGridView *或* ListView *。 – Jim

回答

1

以及據我所知,你不能添加第二個列,但你可以在這樣的方式覆蓋SelectedListBox ItemTemplate:它

那麼你必須做調整你的綁定需要 - 但這應該工作了。 可能你想改變StackPanel,但爲了更好的爲你工作,

<ListBox > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <ListBoxItem IsSelected="{Binding IsChecked}"> 
        <StackPanel > 
         <CheckBox IsChecked="{Binding IsChecked}" Content="{Binding Path=...}" /> 
         <Label Content="{Binding Path=...}"></Label> 
         <Label Content="{Binding Path=...}"></Label> 
        </StackPanel> 
       </ListBoxItem> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
+0

你怎麼認爲OP在使用WPF? – Jim

+0

嗯,你完全正確 - 我只是檢查了一下,WinForms中也有一個CheckedListBox,我也不知道。 @ Dante1986你能告訴我們,如果你需要這個winforms?我可以改變我的答案,然後 – TripleEEE

+0

@TripleEEE抱歉,因爲不清楚。我使用winforms。奇怪的是,checkedlistbox確實有'checkedListBox.MultiColumn = true',但不知道它是否做了什麼以及它應該如何工作 – Dante1986