2017-03-17 1 views
0

Ich habe ein Problem, um dieses Problem zu lösen.Binding Wpf Liste

<DataGrid x:Name="gridMates" ItemsSource="{Binding Groups}"> 

Whit Bindungsgruppen. Diese Gruppen setzen sich aus durch:

public class Group 
{ 
    public List<ClassMate> CLGroup { get; set; } 
    public string GroupName { get; set; } 
} 

ClassMateclass:

public class ClassMate: INotifyPropertyChanged 
{ 
    public string Name { get; set; } 
    public string DisplayName { get; set; }} 

Also ich auf meinem Datagrid zeigen wollen, dass der Gruppenname und die Display jedes Classmate.

Ich sehe Gruppenname dies zu tun:

<DataGrid x:Name="gridMates" ItemsSource="{Binding Groups}"><DataGrid.Columns> 
     <DataGridTextColumn Header="GroupName" Binding="{Binding Path=GroupName}" /> 
     <DataGridTextColumn Header="DisplayName" Binding="{Binding Path=CLGroup.DisplayName}" /> 

Aber ich kann nicht richtig DiplayName sehen. Was ist los?

+0

Gibt es eine 'PointsGroup' Eigenschaft auf 'Gruppe' Klasse? – user3292642

+0

Falscher Code, sorry. Im Moment –

+0

@SimonLP, CLGroup ist eine Liste, die mehr als 1 Element haben kann, und verschiedene Elemente können unterschiedliche DisplayNames haben. Die CLGroup-Liste selbst hat keinen DisplayName. um beispielsweise DisplayName vom ersten Element zu übernehmen, verwenden Sie 'CLGroup [0] .DisplayName' Pfad – ASh

Antwort

0

CLGroup ist eine Liste, die mehr als 1 Element haben kann, und verschiedene Elemente können unterschiedliche DisplayNames haben. Die CLGroup-Liste selbst hat keinen DisplayName. Um DisplayName vom ersten Element zu übernehmen, verwenden Sie beispielsweise den Pfad CLGroup[0].DisplayName. Wenn Sie alle Elemente anzeigen müssen, verwenden Sie DataGridTemplateColumn mit einem ItemsControl in einem CellTemplate.

beiden Ansätze:

<DataGrid.Columns> 
    <DataGridTextColumn Header="GroupName" Binding="{Binding Path=GroupName}" /> 

    <DataGridTextColumn Header="DisplayName" Binding="{Binding Path=CLGroup[0].DisplayName}" /> 

    <DataGridTemplateColumn Header="DisplayName"> 
     <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
       <ItemsControl ItemsSource="{Binding Path=CLGroup}"> 
        <ItemsControl.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Path=DisplayName}"/> 
         </DataTemplate> 
        </ItemsControl.ItemTemplate> 
       </ItemsControl> 
      </DataTemplate> 
     </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 

</DataGrid.Columns> 
0

Ich glaube, Sie so etwas wie dies will

<DataGrid x:Name="gridMates" ItemsSource="{Binding Groups}"><DataGrid.Columns> 
     <DataGridTextColumn Header="GroupName" Binding="{Binding Path=GroupName}" /> 
     <DataGridTemplateColumn Header="Class Mates"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <DataGrid x:Name="gridClassMates" ItemsSource="{Binding CLGroup}"> 
         <DataGrid.Columns> 
          <DataGridTextColumn Header="DisplayName" Binding="{Binding Path=DisplayName}" /> 
         </DataGrid.Columns> 
        </DataGrid> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn>