У меня есть 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 отразил отдельные изменения в каждом столбце.
Большое спасибо.
Это не привязка к данным. Думайте о выражении 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"});
В winforms вот что вы делаете.
Сначала необходимо указать заголовки столбцов, иначе ничего не будет отображаться. Добавить элементы представления списка, используя массив строк.
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);
}
}
скриншот результата: