表示するテキストを変更したいので、DataGridRowGroupHeaderをデータグリッドに再レイアウトしました。 私が望むのは、グループ内で保持しているデータを要約することです。 (具体的には、コレクションに保持されているすべてのアイテムをチェックして、日付が最も古いものを見つけることができるはずです)。Silverlight DataGrid - グループヘッダーテキストを
コレクション内のアイテムにアクセスしようとしていますが、問題があります。 私は、テキストをレンダリングするRowGroupHeaderでコンバータを使用しようとしていましたが、コレクションは常に空に戻ります。
<sdk:DataGrid.RowGroupHeaderStyles>
<Style TargetType="sdk:DataGridRowGroupHeader">
<Setter Property="Template">
<!-- All the other spield from the default template, leading to below where the header text is rendered -->
<StackPanel Grid.Column="3" Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Center" Margin="0,1,0,1">
<TextBlock x:Name="PropertyNameElement" Margin="4,0,0,0"/>
<TextBlock Margin="4,0,0,0" Text="{Binding Name}" />
<TextBlock x:Name="ItemCountElement" Margin="4,0,0,0" Visibility="{TemplateBinding ItemCountVisibility}"/>
<TextBlock x:Name="oldest" Margin="4,0,0,0" Text="{Binding Converter={StaticResource myConverter}, ConverterParameter=Orders}" />
</StackPanel>
そして、私のコンバータは次のように探しています:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
CollectionViewGroup cvg = value as CollectionViewGroup;
if (cvg.Items.Count==0)
return "Test Fails";
else
return FindOldestObjectInCollection(cvg.Items);
}
上記CollectionViewGroupは常に空です - 私はそれがグループ内のすべての項目を含める必要があります信じためにリードしました。 (PagedCollectionViewとして作成されたグループ)。 私は間違っていますか?
私はちょうど今のコレクション全体ではなく、「現在のグループ」のアイテムをどのように渡すことができますか?名前がコントロールに渡されていても、現在のグループで純粋にアイテムを見つけることはできません。 –
グループヘッダーコンテキストで使用できるitemsプロパティには、すでにグループ項目のみが含まれています。 – Eilistraee
ありがとうございます。私は[Items]がDataGridにデータを取り込むために使用していたItemsSourceだと仮定しました。それがそれ自身の財産であることは分かっていませんでした。 –