如何将数据网格绑定到一个成员是列表的类?

时间:2015-12-02 14:24:36

标签: c# list data-binding datagrid

我已经看过一些类似的帖子。 不同之处在于我不想手动设置所有列绑定。

所以我有一个班级

 public class PartProgram
{
  public string Description { get; set; }
  public string Note { get; set; }    
  public string PartProgramFilename { get; set; }
  public List<String> LstBlades { get; set; }
}

我将它绑定到datagridView:

 dtgPPtab3.ItemsSource = olstPartPrograms;

,其中

 public ObservableCollection<PartProgram> olstPartPrograms = new ObservableCollection<PartProgram>();

这几乎无处不在,结果如下图所示:

enter image description here

因此所有列都是正确的,但是我希望将集合值更改为blade1,blade2等的最后一列。

2 个答案:

答案 0 :(得分:0)

您必须使用ItemsControl(DataGrid / ListView等)来显示集合列内容。

例如

<DataGridTemplateColumn>
   <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
               <DataGrid ItemsSource="{Binding LstBlades }"/>
            </DataTemplate>
   </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

答案 1 :(得分:0)

好的,谢谢大家的帮助,但我找到了一个非常简单的解决方案,来自http://www.wpf-tutorial.com/datagrid-control/details-row/

想象一下绑定到数据网格的类:

 ObservableCollection<User> users = new ObservableCollection<User>();
 List<String> lst = new List<string>();
 lst.Add("AAA");
 lst.Add("BBB");
 lst.Add("CCC");
 users.Add(new User() { Id = 1, Name = "John Doe", Str = lst });
 dg.ItemsSource = users;

如果我想要课程中的详细信息,我会添加访问者详细信息:

 public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<String> Str { get; set; }
    public string Details<--------------------------------
    {
        get
        {
            String locStr=string.Empty;
            foreach (var item in this.Str)
                locStr += item + ", ";
            return locStr;
        }
    }
}

为具有可理解的列表版本提供了魔力。 结果是: i get a string from a list