Как я могу программно добавить многостолбцовый ListViewItem без какой-либо привязки данных?

У меня есть ListView с 3 заголовками, объявленными в XAML следующим образом:

<ListView Name="myListView">
  <ListView.View>
    <GridView>
      <GridViewColumn Header="H1"/>
      <GridViewColumn Header="H2"/>
      <GridViewColumn Header="H3"/>
    </GridView>
  </ListView.View>
</ListView>

Я хочу программно добавить ListViewItem к этому ListView, способность установить содержание в ListViewItem, который пойдет под первыми, вторыми, и третьими столбцами индивидуально. До сих пор я только добрался настолько далеко:

ListViewItem l = new ListViewItem();
l.Content = "Content";
myListView.Items.Add(l);

Это устанавливает каждый столбец на строку "Содержание". Как я могу изменить код выше так, чтобы я мог добавить ListViewItem, который отобразит "Содержание 1", "Содержание 2", и "Содержание 3" под первыми, вторыми, и третьими столбцами соответственно? Я попытался искать свойство SubItem или ListViewSubItem в ListViewItem, но ничего не нашел.

Я предполагаю, что существует простое решение, но возможно я неправ. Не упоминайте привязку данных, потому что я только хочу, чтобы ответ на вопрос программно установки свойства Content отразил отдельные изменения в каждом столбце.

Большое спасибо.

6
задан Dalal 29 July 2010 в 00:44
поделиться

2 ответа

Это не привязка к данным. Думайте о выражении Binding как о присвоении имени столбцу.

<ListView Name="myListView">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="H1" DisplayMemberBinding="{Binding Col1}"/>
            <GridViewColumn Header="H2" DisplayMemberBinding="{Binding Col2}"/>
            <GridViewColumn Header="H3" DisplayMemberBinding="{Binding Col3}"/>
        </GridView>
    </ListView.View>
</ListView>

В коде:

myListView.Items.Add(new { Col1 = "test1", Col2 = "Test2", Col3="test3"});
12
ответ дан 8 December 2019 в 18:32
поделиться

В вот что вы делаете.

Сначала необходимо указать заголовки столбцов, иначе ничего не будет отображаться. Добавить элементы представления списка, используя массив строк.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);

        listView1.View=View.Details;
        //Set Columns
        listView1.Columns.Add("Col1");
        listView1.Columns.Add("Col2");
        listView1.Columns.Add("Col3");
        //Fill Rows
        ListViewItem lvi;
        lvi=new ListViewItem(new string[] { "A", "B", "C" });
        listView1.Items.Add(lvi);
        lvi=new ListViewItem(new string[] { "D", "E", "F" });
        listView1.Items.Add(lvi);
        lvi=new ListViewItem(new string[] { "G", "H", "I" });
        listView1.Items.Add(lvi);
    }
}

скриншот результата:

Scr

1
ответ дан 8 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: