2015-09-26 4 views
0

Так у меня есть этот Dictionary:Добавить программно ListViewItem в Listview в WPF

Dictionary<string, double> _statistics; 

Ans я хочу, чтобы добавить этот 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; 

И получил ошибку:

Cannot implicitly convert type 'System.Data.DataTable' to 'System.Collections.IEnumerable'. An explicit conversion exists (are you missing a cast?)

Редактировать

Я также попробовать это:

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 колонки плить.

+0

Почему вы хотите использовать 'DataTable'? –

+0

Мне все равно, что использовать, я хочу только заполнить свой ListView своим Словарем. –

+0

Тогда вы можете просто написать 'listView.ItemsSource = _statistics'. ListView.ItemSource будет работать со всем, что реализует интерфейс 'IEnumerable'. –

ответ

1

ItemsControl.ItemsSource имеет IEnumerable тип и DataTable не реализует этот интерфейс. Вы должны использовать DataView вместо

listView.ItemsSource = table.DefaultView; 

или

listView.ItemsSource = new DataView(table); 

РЕДАКТИРОВАНИЕ

Что касается второго примера вы установили вид ipStatilistViewsticslistView и заполнить listView с деталями. Я предполагаю, что это не то же самое ListView. Также вы связываете Percent столбец, а имя свойства Percentage

+0

Все, что я вижу сейчас, - это один столбец с Insider System.Data.DataRowView (я пробую оба варианта). –

+0

Вы используете стандартную или пользовательскую 'ItemTemplate' в' ListView'? – dkozl

+0

В моем XAML я объявляю только ListView, никаких других изменений не было сделано. –

Смежные вопросы