2012-08-12 40 views
0

我有,我想將它綁定下面的類的綁定字典使用的一類數據網格

GetKeysPair() method 

我嘗試的foreach是字典的值到數據網格控制

public class DBRow : IEnumerable<DBColumn> 
{ 
    public DBColumn this[string ColumnName] 
    { 
     get { return Columns[ColumnName]; } 
     set { Columns[ColumnName] = value; } 
    } 
    public Dictionary<string, DBColumn> Columns { get; set; } 

    public DBRow() 
    { 
     this.Columns = new Dictionary<string, DBColumn>(); 
    } 

    public List<KeyValuePair<string,DBColumn>> GetKeysPair() 
    { 
     List<KeyValuePair<string, DBColumn>> ListOfKeyPair = new List<KeyValuePair<string, DBColumn>>(); 
     foreach (var KeyPair in Columns) 
     { 
      ListOfKeyPair.Add(KeyPair); 
     } 
     return ListOfKeyPair; 
    } 

    public void AddColumn(DBColumn Column) 
    { 
     Columns.Add(Column.Name, Column); 
    } 
    public IEnumerator<DBColumn> GetEnumerator() 
    { 
     foreach (var Column in Columns) 
     { 
      yield return Column.Value; 
     } 
    } 
    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() 
    { 
     foreach (var item in Columns) 
     { 
      yield return item; 
     } 
    } 
} 

結合這樣的:

foreach (var item in Row.GetKeysPair()) 
     { 
      DataGridTextColumn DataGridColumn = new DataGridTextColumn(); 
      DataGridColumn.Header = item.Value.Name; 

      DataGridColumn.Binding = new Binding(********); <<--- Problem!!    

      dataGridDataList.Columns.Add(DataGridColumn); <<--- DataGrid 
     } 

問題是,我不知道在

New Binding(string); 

我想下面的屬性綁定:

public struct DBColumn 
{ 
    public object Data { get; set; } 
} 

我嘗試的選項很多,但我只是不能設法弄清楚:(

回答

1

嗯,我承擔了您的ItemsSource DataGrid是一個字典集合(或一個列表<keyvaluepair>)的集合,如果是這種情況,那麼我相信你應該只能使用索引器來訪問該值,例如

DataGridColumn.Binding = new Binding(string.Format("[{0}].Data", item.Key)); 
+0

WOW,謝謝。它實際上工作。我在那該死的線上花了大約3個小時,出於某種原因,我無法看到簡單的答案:D非常感謝你 – 2012-08-13 04:42:22