2016-01-23 3 views
0

У меня проблема со связыванием. Я хочу привязать элементы списка к столбцам datagrid. Одна строка в datagrid представляет один список элементов. Каждый элемент находится в столбце. Например, все элементы из списка с индексом 0 в столбце с индексом 0.Привязка элементов списка к datagrid

Мой DataGrid:

<DataGrid Name="AttacksForGroupsDG" 
       CanUserAddRows="False" 
       CanUserDeleteRows="True" 
       AutoGenerateColumns="False" 
       DockPanel.Dock="Top" 
       VerticalAlignment="Stretch" 
       HorizontalAlignment="Stretch" 
       Height="250"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Jméno vesnice" Binding="{Binding Name}" Width="120"/> 
      <DataGridTextColumn Header="Souřadnice" Binding="{Binding Coords}" Width="70"/> 
     </DataGrid.Columns> 
    </DataGrid> 

Далее, у меня есть список вещей, к которым я связываться. Каждый элемент этого списка представляет одну строку в моем datagrid.

public abstract class Group<T> 
    where T : Village 
{ 
    public ObservableCollection<T> Villages { get; private set; } 

    // the rest of the code I deleted for a clarity 
} 

И наконец, я связываюсь с этим классом. Свойства Name и Coords, которые я наследую от класса Village.

public sealed class Def : Village 
{ 
    public List<int> Attacks { get; set; } 

    public Def() 
     : base() 
    { 
     Attacks = new List<int>(); 
    } 
} 

Итак, первая колонка в datagrid будет иметь свойство Name. Вторая колонка будет иметь свойство Coords. Следующие столбцы я динамически создаю в коде в соответствии с количеством элементов в списке Атаки в классе Def.

Я не знаю, как связать элементы из этого списка с отдельными столбцами.

Я ценю любые советы.

+0

первые 2 смещ_по_столбцам фиксированы, а затем может быть неограниченное количество столбцов? – AnjumSKhan

+0

@AnjumSKhan Точно. Я создаю первые два столбца в XAML и других столбцах, которые я создаю в коде, в зависимости от размера списка. –

+1

поиск google для: wpf datagrid переменное число столбцов – AnjumSKhan

ответ

0

Добавьте атрибут ItemSource к вашему DataGrid тега привязки в списке Villages:

 <DataGrid Name="AttacksForGroupsDG" 
      CanUserAddRows="False" 
      CanUserDeleteRows="True" 
      AutoGenerateColumns="False" 
      DockPanel.Dock="Top" 
      VerticalAlignment="Stretch" 
      HorizontalAlignment="Stretch" 
      Height="250" 
      ItemsSource="{Binding Villages}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Jméno vesnice" Binding="{Binding Name}" Width="120"/> 
      <DataGridTextColumn Header="Souřadnice" Binding="{Binding Coords}" Width="70"/> 
     </DataGrid.Columns> 
    </DataGrid> 

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

  • Нет связанных вопросов^_^