0

我试图让我的 ListView 包含一个 ComboBox 列。我在启动时将多个条目添加到列表中。其中一列是“版本”。可以有多个版本,我想让用户有机会选择他/她想要更新到哪个版本的项目。

当前列表视图:

lv_requirements.CheckBoxes = true;
lv_requirements.View = View.Details;
//add columns to list view
lv_requirements.Columns.Add("Name", 270);
lv_requirements.Columns.Add("Type", 150);
lv_requirements.Columns.Add("Status", 100);
lv_requirements.Columns.Add("Current Version", 80);
lv_requirements.Columns.Add("Latest Version", 80);

我将项目添加到列表中,如下所示:

String[] itemContent = new String[5];
itemContent[0] = Name;
itemContent[1] = Type;
itemContent[2] = ID;
itemContent[3] = CurrentVersionNumber;
itemContent[4] = LatestVersionNumber;

ListViewItem add = new ListViewItem(itemContent);
add.Tag = handle;

//Add image to list item
add.ImageIndex = item.DisplayImageIndex;
lv_requirements.SmallImageList = icons;
lv_requirements.Items.Add(add);

我要修改的是:

object[] itemContent = new object[5];
itemContent[4] = new ComboBox([AllLaterVersions]);

但据我了解,除了字符串之外,没有其他方法可以启动新的 ListViewItem。有没有办法让我拥有一个包含所有版本的组合框,或者如果不可能,至少在该列中有一个可输入的文本字段,而不是用户可以输入他/她想要的版本。

最好的祝福

4

2 回答 2

1

您的理解是正确的,ListView 的设计旨在将 String Literals 作为其项目。可能有一些技巧可以实际执行您想要的类似操作,但我很确定这不会是一个非常优雅的解决方案。

所以我的建议是,转储 ListView 并使用 DataGridView,只需很少的努力,您就可以使 GridView 看起来与 ListView 非常相似,并且您可以添加一个下拉列表等等......

于 2012-07-13T09:35:30.877 回答
0

您可以使用您需要的值 + 2 个代表用户选择的 bool 属性创建一个实体 ViewModel。

然后您可以轻松地将 DataTemplate 添加到您的 ListView。
DataTemplate 会将复选框(但我认为在这里使用单选按钮会是更好的选择)绑定到 VM 的属性。

<ListView>
 <ListView.View >
    <GridView >
        <!--  other columns you need-->
        <GridViewColumn Header="Versions" >
            <GridViewColumn.CellTemplate>
                <DataTemplate>
                    <CheckBox IsCheck="{Binding LatestVersion}"/>
                    <CheckBox IsCheck="{Binding CurrentVersion}"/>
                </DataTemplate>
            </GridViewColumn.CellTemplate>
        </GridViewColumn>
    </GridView>
 </ListView.View>
</ListView>
于 2012-07-14T08:43:46.160 回答