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>
...
そして100万ドルの質問は....ですか? – Silvermind
エクスパンダーヘッダーにさらにデータを表示するにはどうしたらいいですか? – Misi
どのデータですか?より具体的にする必要があります。 – Paparazzi