I've been struggling for a while now to add items to 2 columns in a ListView
. In my Windows Forms application I had a something like this:
// In my class library: public void AddItems(ListView listView) { var item = new ListViewItem {Text = "Some Text for Column 1"}; item.SubItems.Add("Some Text for Column 2"); listView.Items.Add(item); }
I would then call this class from my Form.cs
.
How can I do this in WPF? Preferably, I wouldn't like to use a lot of XAML.
If you define the ListView
in XAML:
<ListView x:Name="listView"/>
Then you can add columns and populate it in C#:
public Window() { // Initialize this.InitializeComponent(); // Add columns var gridView = new GridView(); this.listView.View = gridView; gridView.Columns.Add(new GridViewColumn { Header = "Id", DisplayMemberBinding = new Binding("Id") }); gridView.Columns.Add(new GridViewColumn { Header = "Name", DisplayMemberBinding = new Binding("Name") }); // Populate list this.listView.Items.Add(new MyItem { Id = 1, Name = "David" }); }
See definition of MyItem
below.
However, it's easier to define the columns in XAML (inside the ListView
definition):
<ListView x:Name="listView"> <ListView.View> <GridView> <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/> <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/> </GridView> </ListView.View> </ListView>
And then just populate the list in C#:
public Window() { // Initialize this.InitializeComponent(); // Populate list this.listView.Items.Add(new MyItem { Id = 1, Name = "David" }); }
See definition of MyItem
below.
MyItem
DefinitionMyItem
is defined like this:
public class MyItem { public int Id { get; set; } public string Name { get; set; } }
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