2012-03-21 9 views
2

thisチュートリアルの後に私はExpander Headerにデータを追加するアイデアがありました。 私は2つのテーブルを持っています(ドキュメント1 - *エントリ)。 Documentsでグループ化されたエントリが表示されていて、 データグリッドでデータを繰り返す必要がないので、エクスパンダのヘッダーに配置すると考えました。Datagridエキスパンダー(グループ化)header

<Expander.Header> 
<StackPanel Orientation="Horizontal"> 
    <TextBlock Text="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GroupItem}}, Converter={StaticResource ResourceKey=groupToTitleConverter}}" /> 
</StackPanel> </Expander.Header> 

コンバータ:

public class GroupToTitleConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     GroupItem groupItem = value as GroupItem; 
     CollectionViewGroup collectionViewGroup = groupItem.Content as CollectionViewGroup; 
     EntryViewModel entryViewModel = collectionViewGroup.Items[0] as EntryViewModel; 
     string title = string.Format("{0} - {1} {2}", entryViewModel.Id, entryViewModel.Numar, entryViewModel.Obiect); 
     return title; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

が最もエレガントな解決策ではないかもしれないヘッダーのタイトルを形成するために、グループ内のコレクションから最初のアイテムを取るが、それは機能します

<DataGrid.GroupStyle> 
      <GroupStyle> 
       <GroupStyle.HeaderTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <TextBlock Text="{Binding Path=Name}" /> 
         </StackPanel> 
        </DataTemplate> 
       </GroupStyle.HeaderTemplate> 
       <GroupStyle.ContainerStyle> 
        <Style TargetType="{x:Type GroupItem}"> 
         <Setter Property="Template"> 
          <Setter.Value> 
           <ControlTemplate TargetType="{x:Type GroupItem}"> 
            <Expander IsExpanded="True"> 
             <Expander.Header> 
              <StackPanel Orientation="Horizontal"> 
               <TextBlock Text="{Binding Path=Name}" /> 
               <TextBlock Text=" - "/> 
               **<TextBlock Text="{Binding Path=Document.Number or Name2}"/>** 
              </StackPanel> 
              ... 
+0

そして100万ドルの質問は....ですか? – Silvermind

+0

エクスパンダーヘッダーにさらにデータを表示するにはどうしたらいいですか? – Misi

+0

どのデータですか?より具体的にする必要があります。 – Paparazzi

答えて