Как программно добавить многостолбцовый ListViewItem без привязки данных? - PullRequest
6 голосов
/ 30 июня 2010

У меня есть 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, который будет отображать «Content 1», «Content 2» и «Content 3» под первым, вторым и третьим столбцами соответственно?Я пытался найти свойство SubItem или ListViewSubItem в ListViewItem, но ничего не нашел.

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

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

Ответы [ 2 ]

12 голосов
/ 30 июня 2010

Это не привязка данных. Думайте об операторе 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"});
0 голосов
/ 30 июня 2010

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

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

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

...