【问题标题】:Add programmatically ListViewItem into Listview in WPF以编程方式将 ListViewItem 添加到 WPF 中的 Listview 中
【发布时间】:2015-12-24 02:12:31
【问题描述】:

所以我有这个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 个专栏。

【问题讨论】:

  • 为什么要使用DataTable?
  • 我不在乎用什么,我只想用我的字典填充我的 ListView。
  • 那么你可以写listView.ItemsSource = _statistics。 ListView.ItemSource 将适用于任何实现 IEnumerable 接口的东西。
  • 效果很好,我可以在 [] 大括号内看到我的值,而且我还需要列标题、宽度...

标签: wpf listview binding


【解决方案1】:

ItemsControl.ItemsSource 属于 IEnumerable 类型,DataTable 没有实现该接口。您需要改用DataView

listView.ItemsSource = table.DefaultView;

或

listView.ItemsSource = new DataView(table);

编辑

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

【讨论】:

  • 我现在只能看到一列 System.Data.DataRowView insid(我尝试了这两个选项)。
  • 您在ListView 中使用默认ItemTemplate 还是自定义ItemTemplate?
  • 在我的 XAML 中,我只声明了 ListView,没有进行其他更改。
  • 检查我的编辑。你的第二次尝试也有问题。通过这些修复,第二次尝试应该可以工作。但是我会将ItemSource 设置为ObservableCollection&lt;MyItem&gt; 的实例并继续向该集合添加项目
猜你喜欢
  • 2010-10-14
  • 1970-01-01
  • 2010-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-03
  • 2012-09-10
相关资源
最近更新 更多