c#KeyValuePair到Multicolumn CheckedListBox的列表

时间:2016-11-18 12:36:43

标签: c# winforms checkedlistbox keyvaluepair

在我的项目中,我创建了一个包含stringelementId键值对的列表。制作列表的原因是因为我想稍后在代码中将所有项目添加到checkedListBox

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));
}

我接下来要做的是将这些键值对添加到checkedListBox,其中名称将添加到elementId的单独列中。

但我似乎无法找到在哪里/如何添加第二列。 checkedListBox.Items.Add()中似乎没有重写方法可以写入多列。

编辑:

使用WinForms。

如果无法定义列,整个checkedListBox.MultiColumn似乎也没有意义。我真的很困惑。

1 个答案:

答案 0 :(得分: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>