如何将复杂的可观察集合(元组集合的集合)关联到数据网格

How to associate a complex observable collection (collection of collections of tuples) to a datagrid

我有一个 class,其中包含一定数量的 tracefiels

 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="密码", TFTYPE="字符串", 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;

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

NAME------------|---PASSWORD---|---IS_ADMIN


Administrator---|------------------------|------TRUE

User1-------------|-------123------------|------FALSE Thank you in advance Patrick

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

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

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

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