以编程方式将ListViewItem添加到WPF中的Listview中

时间:2015-09-26 09:50:59

标签: wpf listview binding

所以我有Dictionary

 Dictionary<string, double> _statistics;

我想将此Dictionary添加到我的ListView,其中包含2列:

DataTable table = new DataTable();
table.Columns.Add("Name");
table.Columns.Add("Percent");

foreach (KeyValuePair<string, double> item in _statistics)
    table.Rows.Add(item.Key, item.Value);
listView.ItemsSource = table;

出了错误:

  

无法将类型'System.Data.DataTable'隐式转换为   'System.Collections.IEnumerable'。存在显式转换(是   你错过了一个演员?)

修改

我也试试这个:

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

    public double Percentage { get; set; }
}

        var gridView = new GridView();
        ipStatilistViewsticslistView.View = gridView;
        gridView.Columns.Add(new GridViewColumn
        {
            Header = "Name",
            DisplayMemberBinding = new Binding("Name")
        });
        gridView.Columns.Add(new GridViewColumn
        {
            Header = "Percent",
            DisplayMemberBinding = new Binding("Percent")
        });

        foreach (KeyValuePair<string, double> item in _statistics)
            listView.Items.Add(new MyItem { Name = item.Key, Percentage = item .Value}); 

在这种情况下,我所能看到的只是我的2列heards。

1 个答案:

答案 0 :(得分:1)

ItemsControl.ItemsSource属于IEnumerable类型,DataTable未实现该接口。您需要使用DataView代替

listView.ItemsSource = table.DefaultView;

listView.ItemsSource = new DataView(table);

修改

至于您的第二个示例,您设置ipStatilistViewsticslistView的视图并使用项目填充listView。我猜它不一样ListView。您还绑定了Percent列,而该属性的名称为Percentage