2016-03-01 50 views
0

我有一個包含一定數量tracefiels如何將複雜的觀察集合(元組的集合的集合)到DataGrid關聯

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 = 「管理員」
  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: 

enter image description here

現在我想將其綁定到一個DataGrid,正如你在PIC看,我通過:

dtgUsers.ItemsSource = easyRunData.Collections.obcTraceFieldUsers; 

但沒有出現。 我想有這樣的:

NAME ------------ | ---密碼--- | --- IS_ADMIN


管理員 - - | ------------------------ | ------ TRUE

User1 ---------- --- | ------- 123 ------------ | ------ FALSE 預先致謝 Patrick

+0

你可以請添加DataGrid(特別是列)? – Domysee

+0

datagrid由dtgUsers.ItemsSource = easyRunData.Collections.obcTraceFieldUsers;的數據綁定填充;當程序啓動時沒有列出現 – Patrick

+0

你想顯示所有的tracefields嗎? – Domysee

回答

1

您的問題是您有ObservableCollections的ObservableCollection。通過遍歷您傳遞的ObservableCollection作爲ItemsSourceDataGrid只發現ObservableCollection s,它不知道如何顯示。

你需要將其降低到一個集合,例如:

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

如果該解決方案是不是在你的情況是可行的,沒有自動的方式,讓你展現你的數據結構,所以你」 d必須手動創建列。

+0

謝謝我知道這是問題,但解決方案是不可接受的。除了手動構建列外​​,沒有其他的解決方法嗎? – Patrick

+1

也許'DataTemplate'可以工作,但我不確定 – Domysee

+0

請接受我的解決方案是確保沒有自動方式將數據網格關聯到集合集合。通過了解,我將手動構建列。謝謝 – Patrick