XamPivotGridではメジャーの登録が1件の場合にメジャー名が表示されません。

メジャーの登録が1件の場合でもメジャー名を表示するには、PivotColumnHeaderCellControlスタイルのデフォルトのテンプレートを上書きし、メジャー名表示用のTextBlockを追加します。

PivotColumnHeaderCellControlのデフォルトのスタイルは以下のファイルにて定義を確認できます。(※2023 vol2の場合)
C:\Program Files (x86)\Infragistics\2023.2\WPF\DefaultStyles\XamPivotGrid\generic_shared.xaml

具体的な実装内容は、PivotColumnHeaderCellControlスタイルのテンプレート内で「HeaderPresenter」の名前で定義されているContentControlの下に以下を追加します。

<TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Cell, Converter={StaticResource myConverter}}" VerticalAlignment="Center" HorizontalAlignment="Stretch" Margin="{TemplateBinding Padding}" Foreground="{TemplateBinding Foreground}"/>

上記TextBlockのTextプロパティのバインディングにはメジャー名を設定するためのコンバーターmyConverterが設定してあります。myConverterは以下のように実装します。

public class MyConverter : IValueConverter
{
	public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
	{
		PivotHeaderCell headerCell = value as PivotHeaderCell;
		if (headerCell != null)
		{
			FlatDataSource data = (headerCell.Grid as XamPivotGrid).DataSource as FlatDataSource;
			if (data.Measures.Count == 1 && headerCell.Member.Caption == "")
			{
				return data.Measures[0].Caption;
			}
		}
		return null;
	}

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

メジャー名が表示されました。

Tagged:

製品について

Ultimate UI for WPF