【问题标题】:How to associate a complex observable collection (collection of collections of tuples) to a datagrid如何将复杂的可观察集合(元组集合的集合)关联到数据网格
【发布时间】:2016-06-14 06:29:56
【问题描述】:

我有一个包含一定数量跟踪字段的类

 public class TracefieldsUserClass
 {            
   public ObservableCollection<Tuple<string, object, object>> TraceFieldsUser = new ObservableCollection<Tuple<string, object, object>>();
 }

这里每个元组包含 3 个数据:TracefieldName、traceFieldType、traceFieldValue

  1. TFNAME="NAME", TFTYPE="STRING", TF_VALUE="ADMINISTRATOR"

  2. TFNAME="PASSWORD", TFTYPE="STRING", TF_VALUE=null

  3. TFNAME="IS_ADMIN", TFTYPE="BOOL", TF_VALUE="TRUE"

    所以这是一个动态的数据集合。

所有这些都添加到集合中:

public class CollectionClass
    {                                  
        public ObservableCollection<TracefieldsUserClass> obcTraceFieldUsers = new ObservableCollection<TracefieldsUserClass>();
    }
    public CollectionClass Collections = new CollectionClass();

as you can see in the picture at the beginning the obcTraceFieldUsers  is properly populated:

现在我想将它绑定到一个数据网格,正如您在图片中看到的那样,我通过以下方式完成:

dtgUsers.ItemsSource = easyRunData.Collections.obcTraceFieldUsers;

但什么也没有出现。 我想要类似的东西:

名称------------|---密码---|---IS_ADMIN


管理员---|------------|-----TRUE

用户1-------------|--------123------------|-----FALSE 先感谢您 帕特里克

【问题讨论】:

  • 能否请您添加 DataGrid(尤其是 Columns)?
  • 数据网格由数据填充 与 dtgUsers.ItemsSource = easyRunData.Collections.obcTraceFieldUsers;程序启动时不显示任何列
  • 你想显示所有的tracefields吗?
  • 请作为开始!

标签: c# datagrid bind observablecollection


【解决方案1】:

您的问题是您有一个 ObservableCollection 的 ObservableCollections。通过遍历作为ItemsSource 传入的ObservableCollection,DataGrid 只能找到ObservableCollections,它不知道如何显示。

你需要将其缩减为一个集合,例如:

dtgUsers.ItemsSource = easyRunData.Collections.obcTraceFieldUsers
    .SelectMany(tracefieldsUserClass => tracefieldsUserClass.TraceFieldsUser);

如果该解决方案在您的情况下不可行,则无法自动显示数据结构,因此您必须手动创建列。

【讨论】:

  • 谢谢 我知道这是问题,但解决方案是不可接受的。除了手动构建列之外没有其他解决方法吗?
  • 也许DataTemplate 可以工作,但我不确定
  • 请我接受的解决方案是确定没有自动方法将数据网格与集合集合相关联。通过了解,我将手动构建列。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
相关资源
最近更新 更多