WPF& ListView - 在运行时添加列和项目

时间:2011-04-08 23:13:01

标签: c# .net wpf listview listviewitem

请原谅我的高傲。

我是从Windows Forms过来的,所以我可以使用很棒的Fluent Ribbon Control Suite。我正在为某人重做一个应用程序。

基本上,我需要能够以编程方式创建新的Column并在运行时使用DB Query中的Items填充它们。根据单击的按钮,我还需要清除ListView中的所有项目,并使用不同的列名称和其他数据库查询中的新项目重新填充它。

但是我很难想出来。我只是不明白。在查看在线之前,我做的第一件事是(思考并希望它与Windows Forms的工作方式非常相似):

GridViewColumn gvc = new GridViewColumn();
            gvc.Header = "hi baeltazor!";
            listView1.Items.Add(gvc);

但是,我错了。我试图在那里做的是创建一个名为“hi baeltazor!”的专栏。并将其添加到ListView。如何在运行时使用项目和列填充ListView?

我见过的唯一解决方案涉及很多XAML,我不知道它是如何工作的,因为我无法在运行时更改XAML?

2 个答案:

答案 0 :(得分:4)

<ListView x:Name="ListViewControl">
    <ListView.View>
        <GridView x:Name="GridViewControl"/>
    </ListView.View>
</ListView>

并且在代码背后,

ListViewControl.ItemsSource = ItemsSourceObject;   //your query result 
GridViewColumn column = new GridViewColumn();
column.Header = "Name";
column.DisplayMemberBinding = new Binding("Name");
GridViewControl.Columns.Add(column);

答案 1 :(得分:3)

一个建议......考虑使用DataGrid控件(似乎适合您的要求) 它可以自动为项目源生成列。 如果你真的想自己创建列...你可以通过使用4种类型的DataGridColumn来实现,这些类型可能不需要设置CellTemplate(这很容易从后面的代码中实现)。当然,有一种类型可以指定CellTemplate