0

ListView に ComboBox である 1 つの列を含めようとしています。起動時にリストに複数のエントリを追加しています。列の 1 つは「バージョン」です。複数のバージョンが存在する可能性があり、ユーザーが更新したいアイテムのバージョンを選択できるようにしたいと考えています。

現在のリストビュー:

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 を開始する方法はありません。すべてのバージョンの ComboBox を用意するか、それが不可能な場合は、ユーザーが自分の希望のバージョンを入力できる代わりに、少なくともその列に入力可能なテキスト フィールドを用意する方法はありますか。

よろしくお願いします

4

2 に答える 2

1

あなたの理解は正しいです。設計による ListView は、その項目として文字列リテラルを対象としています。あなたが望むように実際に似たようなことをするためのハックがあるかもしれませんが、それは非常にエレガントな解決策ではないでしょう.

したがって、私のアドバイスは、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 に答える