wpf datagrid组合框绑定staticresource keyvalue对列表

时间:2013-05-18 08:58:42

标签: wpf binding datagrid staticresource

我希望有人可以帮助我或发布相关问题的链接,这将有答案。我已经阅读了大部分内容,这就是我如何做到这一点......

所以我有一个包含3列的数据网格,其中两列绑定到一个数据表,第三个是组合列,应该绑定到另一个。

我将组合框列绑定到静态资源。

我不了解如何将数据表转换为我想用作组合框列的静态资源的键值对列表。

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>

Combobox专栏:

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

现在这个工作正常,但我如何将此表传递给MyClassificators类,如何将其转换为列表&gt; :

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

1 个答案:

答案 0 :(得分:0)

假设“country”是填充表,则第0列为“id_country”,第1列为“name”:

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中的所有行并获取每行的前两项并将它们分别添加到列表中;)