2017-03-17 4 views
0

私はこの問題を解決するいくつかの問題があります。バインディングWpfリスト

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

ウィットバインディンググループ。

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; }} 

だから、私はデータグリッドGroupNameの各クラスメートの表示名の上に表示します。

私はGroupNameのは、このやって参照してください。

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

しかし、私は右のDiplayNameを見ることができないが。 どうしたのですか?

+0

のようなものは、あなたの 'グループ' クラスの 'PointsGroup' プロパティがありますしたいと思いますか? – user3292642

+0

コードが間違っています。申し訳ありません。今すぐ –

+0

@SimonLP、CLGroupは1つ以上のアイテムを持つことができるリストであり、異なるアイテムは異なるDisplayNameを持つことができます。 CLGroupリスト自体にはDisplayNameはありません。たとえば、CLGroup [0] .DisplayName'のパスを使用してDisplayNameを取得するには – ASh

答えて

0

CLGroupは、1つ以上のアイテムを持つことができるリストであり、異なるアイテムは異なるDisplayNamesを持つことができます。 CLGroupリスト自体にはDisplayNameはありません。 DisplayNameを最初の項目から取得するには、たとえば、CLGroup[0].DisplayNameパスを使用します。

すべてのアイテムを表示する必要がある場合は、DataGridTemplateColumnにCellTemplateのItemsControlを使用してください。

両方のアプローチ:

<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

は、私はあなたがこの

<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>