WPF DataGrid的组合框结合键值对的静态资源列表(wpf datagrid combobox

2019-10-29 05:58发布

我希望有人能帮助我,或张贴一个链接到相关的问题,这将有答案。 我看过他们大多和这就是我如何走到这一步......

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

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

我不uderstand如何改造一个数据表来,我想作为我comboboxcolumn静态资源使用键值对的列表。

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

Answer 1:

假设“国家”是你填的表,该列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]));
    }
}

通过在数据表中的所有行,并得到各行的前两个项目分别将它们添加到列表中这将循环;)



文章来源: wpf datagrid combobox binding staticresource list of keyvalue pairs