将项目添加到 WPF ListView 中的列

Posted

技术标签:

【中文标题】将项目添加到 WPF ListView 中的列【英文标题】:Add Items to Columns in a WPF ListView 【发布时间】:2013-03-29 18:02:16 【问题描述】:

我一直在努力将项目添加到 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。

【问题讨论】:

XAML 有什么问题? 【参考方案1】:

使用更少 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; 

【讨论】:

UWP / WinRT 的部分解决方案:***.com/questions/12828704/…

以上是关于将项目添加到 WPF ListView 中的列的主要内容,如果未能解决你的问题,请参考以下文章

从子窗口刷新 WPF 页面

WPF ListView 中的多维绑定

隐藏wpf listview的列

WPF 中的 ListView 子项

Flutter - 在无状态小部件中动态地将项目添加到 ListView

将按钮添加到 WinForms 中的 Listview