2013-05-18 2 views
0

Я надеюсь, что кто-то может мне помочь или опубликовать ссылку на связанный с ней вопрос, который будет иметь ответ. Я прочитал большинство из них, и именно так я получил это ...wpf datagrid combobox binding staticresource список пар значений ключа

Итак, у меня есть datagrid с 3 столбцами, два из которых привязаны к одному datatable, а третий, который является comboboxcolumn, должен быть привязан к другой.

Я привязал столбец combobox к статическому ресурсу.

Что я не понимаю, как преобразовать данные в список пар ключей, которые я хочу использовать в качестве статического ресурса для моей панели combobox.

public class MyClasificators:List<KeyValuePair<object, object>> 
{ 

    public MyClasificators() 
    { 

     this.Add(new KeyValuePair<object, object>(1, "Test")); 
     this.Add(new KeyValuePair<object,object>(2, "Test1")); 
     this.Add(new KeyValuePair<object, object>(3, "Test2")); 

    } 
} 

XAML:

<local:MyClasificators x:Key="clList"></local:MyClasificators> 

колонка выпадающий:

<dg:DataGridTemplateColumn Header="test"> 
    <dg:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
     <ComboBox ItemsSource="{StaticResource clList}" DisplayMemberPath="Value"/> 
     </DataTemplate> 
     </dg:DataGridTemplateColumn.CellTemplate> 
</dg:DataGridTemplateColumn> 

Теперь это работает отлично, но как я могу передать эту таблицу к классу MyClassificators и как преобразовать его в список> :

DataTable country = new DataTable(); 
      country.Columns.Add(new DataColumn("id_country", typeof(int))); 
      country.Columns.Add(new DataColumn("name", typeof(string))); 
      DS.Tables.Add(country); 
+0

Итак, вы хотите поместить содержимое MyClassificator в DataTable? –

+0

Нет, наоборот. Я хочу поместить все записи Datatable в MyClassificator. – acosta

ответ

0

Если предположить, что «страна» ваша заполнена таблица, что столбец 0 является «id_country» и столбец 1 является «имя»:

public MyClasificators() 
{ 
    //Acquire "country" DataTable before this point 

    foreach (DataRow row in country.Rows) 
    { 
     this.Add(new KeyValuePair<object, object>(row.ItemArray[0], row.ItemArray[1])); 
    } 
} 

Это будет цикл через все строки в DataTable и получить первые два элемента каждого строка и добавить их соответственно в список;)

+1

Зачем спасибо, добрый сэр! Должен признаться, я никогда не знал, насколько дружелюбны и полезны люди здесь. – acosta

+0

У меня все еще есть проблема с этим. 'Code' MyClasificators общественного класса: List > { общественных недействительного _MyClasificators (DataTable страны) { Еогеаспа (DataRow строка в country.Rows) { this.Add (новый KeyValuePair <объект , object> (row.ItemArray [0], row.ItemArray [1])); } } 'code' и в основном классе у меня есть' code' public void callMyClassificators() { MyClasificators clasif = new MyClasificators(); clasif._MyClasificators (страна); } 'code' – acosta

+0

Какая у вас проблема? –

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

  • Нет связанных вопросов^_^