题 将项添加到WPF ListView中的列


我现在一直在努力将项目添加到2列中 ListView。在我的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。


29
2018-04-07 18:01


起源


XAML有什么问题? - ProfK


答案:


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

如果你定义了 ListView 在XAML中:

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

79
2018-04-07 18:27



部分解决方案 UWP / WinRT的: stackoverflow.com/questions/12828704/... - MA-Maddin