在WPF列表视图中将项添加到列中

本文关键字:添加 列表 视图 WPF | 更新日期: 2023-09-27 18:07:50

我已经挣扎了一段时间了,现在在ListView的2列中添加项目。在我的Windows窗体应用程序中,我有这样的东西:

// 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);
}

然后我将从我的Form.cs调用这个类。

我如何在WPF中做到这一点?最好不要使用太多的XAML

在WPF列表视图中将项添加到列中

少XAML多c#的解决方案

如果你在XAML中定义了ListView:

<ListView x:Name="listView"/>

然后你可以在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" });
}

参见下面MyItem的定义

使用更多XAML和更少c#的解决方案

但是,在XAML中定义列更容易(在ListView定义中):

<ListView x:Name="listView">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Id" DisplayMemberBinding="{Binding Id}"/>
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}"/>
        </GridView>
    </ListView.View>
</ListView>

然后在c#中填充列表:

public Window()
{
    // Initialize
    this.InitializeComponent();
    // Populate list
    this.listView.Items.Add(new MyItem { Id = 1, Name = "David" });
}

参见下面MyItem的定义

MyItem定义

MyItem的定义如下:

public class MyItem
{
    public int Id { get; set; }
    public string Name { get; set; }
}