【问题标题】:ADO.NET DataGrid String BindingADO.NET DataGrid 字符串绑定
【发布时间】:2010-11-24 08:22:17
【问题描述】:

我有一个 Datagrid,在启动时我设置了它的列集,然后我将它绑定到一个 List> 以便用数据填充它。每个嵌套列表的项目数与我得到的列数相同,但是......我没有得到任何显示......将 2D 集合绑定到 DataGrid 的正确做法是什么?

代码示例

List<List<String>> rows = SomeFunctionThatReturnsTheRows();
this.grid.ItemsSource = rows;

谢谢你, 米卢德 B.

【问题讨论】:

    标签: c# wpf data-binding collections datagrid


    【解决方案1】:

    那么这个怎么样

    var rows = new List<List<string>>()
          {
              new List<string>() {"List1-1", "List1-2", "List1-3"},
              new List<string>() {"List2-1", "List2-2", "List2-3"}
          };
    GridView gv = new GridView();
    this.grid.View = gv;
    gv.Columns.Add(new GridViewColumn(){DisplayMemberBinding = new Binding(".[0]")});
    gv.Columns.Add(new GridViewColumn(){DisplayMemberBinding = new Binding(".[1]")});
    gv.Columns.Add(new GridViewColumn(){DisplayMemberBinding = new Binding(".[2]")});
    this.grid.ItemsSource = rows;
    

    【讨论】:

    • 你把它打倒了,谢谢院长!我将它改编为 DataGridView 并且它有效!但只有一个问题:grid.ItemsSource = rows 导致两个尾随列的绑定:Capacity 和 Count,它们是从 List 绑定的......我怎样才能排除它们?
    • 您需要关闭 AutoGenerateColumns 并以编程方式创建列
    • 院长你很好!非常感谢你今天教会了我很多东西;)
    【解决方案2】:

    试试这个

    DataContext = new List<List<string>>()
      {
          new List<string>() {"List1-1", "List1-2", "List1-3"},
          new List<string>() {"List2-1", "List2-2", "List2-3"}
      };
    
    <ListView ItemsSource="{Binding}">
      <ListView.View>
        <GridView>
          <GridView.Columns>
            <GridViewColumn DisplayMemberBinding="{Binding .[0]}" /> 
            <GridViewColumn DisplayMemberBinding="{Binding .[1]}" /> 
            <GridViewColumn DisplayMemberBinding="{Binding .[2]}" /> 
          </GridView.Columns>
        </GridView>
      </ListView.View>
    </ListView>
    

    产生这个

    【讨论】:

    • 谢谢院长。只有一个人认为,我必须以编程方式绑定,我无法在我的上下文中编辑我的 xaml。
    【解决方案3】:

    你需要用谷歌搜索的是绑定到嵌套集合,而不是 2D 集合 - 这样你会得到更多结果 :)

    WPF DataGrid: DataGridComboxBox ItemsSource Binding to a Collection of Collections 会回答你的问题吗?

    【讨论】:

    • 谢谢马特。虽然,不,它并没有真正回答它:p。问题是我无法编辑我的 XAML,我必须找到一个 100% 的编程解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多