2013-05-18 47 views
0

我希望有人可以帮助我或发布一个链接到相关的问题,这将有答案。我已阅读他们大多数,这就是我如何得到这么远...wpf datagrid组合框绑定staticresource keyvalue对列表

所以我有一个3列datagrid,其中两个绑定到一个数据表和第三个是一个comboboxcolumn应绑定到另一个。

我把combobox列绑定到一个静态资源。

我不理解如何将数据表转换为我想用作我的combobox列的静态资源的keyvalue对列表。

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])); 
    } 
} 

这将循环获取每个的前两个项目并将它们分别添加到列表中;)

+1

为什么感谢你,善良的先生!我必须承认,我从来不知道这里的人有多么友善和乐于助人。 – acosta

+0

我仍然有执行此问题,虽然。 'code'公共类MyClasificators:列表> { 公共无效_MyClasificators(DataTable的国家) { 的foreach(DataRow的行country.Rows) { this.Add(新KeyValuePair <对象,object>(row.ItemArray [0],row.ItemArray [1]));我们有'代码'public void callMyClassificators() { } MyClasificators clasif = new MyClasificators(); clasif._MyClasificators(country); }'code' – acosta

+0

你有什么样的问题? –