2015-04-24 2 views
0

Элемент ItemsSource DataGrid - это List<myClass>, а myClass имеет свойство List<int>.
Теперь я хочу связать первый элемент List<int> с первым столбцом DataGrid, а второй - со вторым столбцом.
Как это сделать?Столбец DataGrid привязывается к элементу списка

XMAL:

<DataGrid.Columns> 
    <DataGridTextColumn Header="MyClass Name" Binding="{Binding Name}" ></DataGridTextColumn> 
    <DataGridTextColumn Header="First Item of Numbers" Binding="{Binding ??}" ></DataGridTextColumn> 
    <DataGridTextColumn Header="Second Item of Numbers" Binding="{Binding ??}" ></DataGridTextColumn>           
</DataGrid.Columns> 

C#:

class MyClass 
{    
     public string Name{ get; set; } 
     public List<int> Numbers= new List<int>(); 
} 
+0

Было бы очень полезно, если вы показать код. –

+0

Значит, вы хотели связать их в столбцах вместо строк? – aggietech

+0

Возможный дубликат [WPF horizontal DataGrid] (http://stackoverflow.com/questions/4132829/wpf-horizontal-datagrid) – aggietech

ответ

3

Вы можете указать индекс коллекции.

Пример:

Text = "{Binding MyClasses[0]}" 

Text = "{Binding MyClasses[1]}" 
0

Для требования, как это, что я рекомендовал бы вам, -

Наше требование иметь коллекцию, которая имеет элементы со свойствами, поступающими из списка.

Для этого вы можете использовать Micosoft Dynamics .. иметь объект ExpandoObject, создать свойства в объекте expando из списка и установить нужное значение ячейки.

Так, например, ваш список {1, 2, 3, 4}

Мы хотим, чтобы результирующая сетка будет

| 1 | 2 | 3 | 4 |

| value1 | Value2 | Значение3 | Value4 |

var listOfInt = new List<int>{1,2,3,4}; 
     var exPo = new ExpandoObject(); 
     var listOfExPo = new List<ExpandoObject>(); 

     var expoDict = (IDictionary<string,object>) exPo; 

     foreach (var i in listOfInt) 
     { 
      expoDict.Add(i.ToString(), "value" + i); 
     } 

     listOfExPo.Add(exPo); 

Теперь, когда вы связываете ваши сетки ListOfExpo, вы будете иметь сетку с колоннами поступающих из ListOfInt

Надеется, что это очищает, дайте мне знать, если вам нужно больше информации об этом.

Смежные вопросы