I have a ListView with 3 headers, declared in XAML as follows:
<ListView Name="myListView">
<ListView.View>
<GridView>
<GridViewColumn Header="H1"/>
<GridViewColumn Header="H2"/>
<GridViewColumn Header="H3"/>
</GridView>
</ListView.View>
</ListView>
I want to programmatically add a ListViewItem to this ListView, being able to set the content within the ListViewItem that will go under the first, second, and third columns individually. So far, I have only gotten this far:
ListViewItem l = new ListViewItem();
l.Content = "Content";
myListView.Items.Add(l);
This sets each column to the string "Content". How can I change the code above so that I can add a ListViewItem that will display "Content 1", "Content 2", and "Content 3" under the first, second, and third columns respectively? I tried to look for a SubItem or ListViewSubItem property within ListViewItem, but found nothing.
I assume there's a simple solution, but maybe I'm wrong. Please do not mention data binding, because I only want an answer to the question of programmatically setting the Content property to reflect individual changes in each column.
Thank you very much.
This is not databinding. Think of the Binding statement as giving the column a name.
<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>
In code:
myListView.Items.Add(new { Col1 = "test1", Col2 = "Test2", Col3="test3"});
In winforms here is what you do.
You have to set the column headins first, otherwise nothing will show. The add the list view items using a string array.
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);
}
}
a screenshot of the result is
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With