【问题标题】:wpf datagrid combobox binding staticresource list of keyvalue pairswpf datagrid组合框绑定静态资源键值对列表
【发布时间】:2013-05-18 08:58:41
【问题描述】:

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

所以我有一个包含 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>

组合框列:

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

【问题讨论】:

  • 所以你想把 MyClassificator 的内容放在一个 DataTable 中?
  • 反之不行。我想把 Datatable 的所有条目都放到 MyClassificator 中。

标签: wpf binding datagrid staticresource


【解决方案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]));
    }
}

这将遍历DataTable中的所有行并获取每行的前两项并将它们分别添加到列表中;)

【讨论】:

  • 谢谢你,好心的先生!我必须承认,我从来不知道这里的人是多么友好和乐于助人。
  • 我仍然在实现这个时遇到了问题。 code public class MyClasificators:List> { public void _MyClasificators(DataTable country) { foreach (DataRow row in country.Rows) { this.Add(new KeyValuePair(row.ItemArray [0], row.ItemArray[1])); } }code 在主类中我有code public void callMyClassificators() { MyClasificators clasif = new MyClasificators(); clasif._MyClasificators(国家); } code
  • 你有什么问题?
  • 如果我尝试调用方法“callMyClassificators”,它告诉我对象引用未设置为对象的实例
  • 你从哪里拉你的国家表?
猜你喜欢
  • 2021-07-22
  • 1970-01-01
  • 2018-01-17
  • 2011-09-12
  • 2019-09-04
  • 2011-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多