dataLegend1.Target = dataChart1;
dataLegend1.HeaderText = "My Custom Data Legend Header";
dataLegend1.SummaryType = Infragistics.Controls.Charts.DataLegendSummaryType.Total;
dataLegend1.SummaryTitleText = "Grand Total";
UltraDataLegend は Legend
のように機能するコンポーネントですが、シリーズの値の表示や、シリーズの行と値の列のフィルタリング、値のスタイルと書式を設定するための多くの構成プロパティを提供します。この凡例は、UltraDataChart のプロット領域内でマウスを移動すると更新され、ユーザーのマウス ポインターがプロット領域を離れたときに最後にホバーされたポイントを記憶する永続的な状態になります。このコンテンツは、3 種類の行と 4 種類の列のセットを使用して表示されます。
UltraDataLegend の行には、ヘッダー行、シリーズ行、および集計行が含まれます。
ヘッダー行には、ホバーされたポイントの軸ラベルが表示され、HeaderText プロパティを使用して変更できます。
シリーズ行は、実際には、チャートにプロットされた各シリーズに対応する行のセットにすることができます。これらの行には、凡例バッジ、シリーズ タイトル、シリーズの実際の値 / 省略値、および指定されている場合は省略記号と単位が表示されます。
最後に、すべてのシリーズ値の合計を表示する集計行があります。デフォルトの集計タイトルは、凡例の SummaryTitleText プロパティを使用して変更できます。また、SummaryType プロパティを使用して、シリーズ値の合計、最小、最大、または平均を集計行に表示するかどうかをカスタマイズできます。
以下のコードス ニペットは、上記のプロパティを設定して、集計のカスタム タイトルとカスタム ヘッダーを持つ Total 集計タイプの UltraDataLegend を設定する方法を示しています。
C# の場合:
dataLegend1.Target = dataChart1;
dataLegend1.HeaderText = "My Custom Data Legend Header";
dataLegend1.SummaryType = Infragistics.Controls.Charts.DataLegendSummaryType.Total;
dataLegend1.SummaryTitleText = "Grand Total";
UltraDataLegend の列には、タイトル、ラベル、値、および単位の列が含まれます。チャートの各シリーズには、凡例の IncludedColumns または ExcludedColumns コレクションに応じて、ラベル、値、および単位の複数の列を含めることができます。
タイトルの列には、チャートにプロットされた各 Series
の Title
プロパティに由来する凡例バッジとシリーズ タイトルが表示されます。
ラベルの列には、凡例の IncludedColumns または ExcludedColumnsコレクション内のさまざまなプロパティパスの名前または省略形が表示されます。
値の列には、一連の値が省略形のテキストとして表示されます。この省略形は、ValueFormatAbbreviation プロパティを使用して書式設定でき、このプロパティを Auto
または Shared
に設定することですべての数値に同じ省略形を適用できます。または、ユーザーは Independent
、Kilo
、Million
などの他の省略形を選択できます。省略値の精度は、最小桁数と最大桁数にそれぞれ ValueFormatMinFractions と ValueFormatMaxFractions を使用して制御されます。
単位の列には、省略記号や単位テキストが表示されます。これらは、すべての列に UnitsText を設定するか、チャートの各シリーズで次のプロパティを使用して、ink:Infragistics.Win.DataVisualization.UltraDataChart~Infragistics.Win.DataVisualization.UltraDataLegend.html[UltraDataLegend] で設定できます:
カテゴリ シリーズ (例: ColumnSeries):
ValueMemberAsLegendUnit="K"
財務物価シリーズ:
OpenMemberAsLegendUnit="K"
LowMemberAsLegendUnit="K"
HighMemberAsLegendUnit="K"
CloseMemberAsLegendUnit="K"
範囲シリーズ:
LowMemberAsLegendUnit="K"
HighMemberAsLegendUnit="K"
ラジアル シリーズ:
ValueMemberAsLegendUnit="K"
極座標シリーズ:
RadiusMemberAsLegendUnit="K"
AngleMemberAsLegendUnit="K"
上記の各プロパティには、前述のラベル列のテキストを判別するための対応する MemberAsLegendLabel
プロパティもあります。
IncludedColumns および ExcludedColumns コレクションに含まれる列は、通常、基になるデータ項目の値パスに対応しますが、ファイナンシャル シリーズには、正しくプロットするために必要な High
、Low
、Open
、Close
パス、および、いくつかの特別なパスを含めるオプションがあります 。凡例内に TypicalPrice
、Change
、および Volume
オプションを表示することができます。
以下のコード スニペットは、ValueMemberAsLegendUnit プロパティが設定された ColumnSeries
のペアと、UltraDataLegend に設定された最小/最大の分数を示しています。
C# の場合:
EnergyData energyDataSource = new EnergyData();
CategoryXAxis xAxis = new CategoryXAxis()
{
ItemsSource = energyDataSource,
Label = "Location"
};
NumericYAxis yAxis = new NumericYAxis();
ColumnSeries series1 = new ColumnSeries()
{
XAxis = xAxis,
YAxis = yAxis,
ItemsSource = energyDataSource,
ValueMemberPath = "Coal",
ValueMemberAsLegendUnit = "K"
};
ColumnSeries series2 = new ColumnSeries()
{
XAxis = xAxis,
YAxis = yAxis,
ItemsSource = energyDataSource,
ValueMemberPath = "Solar",
ValueMemberAsLegendUnit = "K"
};
dataChart1.Axes.Add(xAxis);
dataChart1.Axes.Add(yAxis);
dataChart1.Series.Add(series1);
dataChart1.Series.Add(series2);
dataLegend1.Target = dataLegend1;
dataLegend1.ValueFormatMinFractions = 2;
dataLegend1.ValueFormatMaxFractions = 4;
UltraDataLegend は、各タイプの列をスタイル設定するためのプロパティを提供します。これらの各プロパティ名は、Title、Label、Value、Units で始まり、テキストの色、フォント、およびマージンのスタイルを設定できます。たとえば、これらのそれぞれのテキストの色を設定する場合は、TitleTextColor、LabelTextColor、ValueTextColor、および UnitsTextColorプロパティを設定します。
以下のコード スニペットは、上記のスタイル設定プロパティを設定する方法を示しています。
C# の場合:
dataLegend1.Target = dataChart1;
dataLegend1.TitleTextColor = Brushes.LightGray;
dataLegend1.LabelTextColor = Brushes.LightGray;
dataLegend1.ValueTextColor = Brushes.Green;
dataLegend1.UnitsTextColor = Brushes.Green;
dataLegend1.UnitsText = "K";
UltraDataLegend は、その ValueFormatAbbreviation プロパティを使用して、大きな数の自動省略形を提供します。これにより、単位の列に kilo、million、billion などの乗数が追加されます。
ValueFormatMinFractions および ValueFormatMaxFractions を設定することにより、表示される小数桁数をカスタマイズできます。これにより、小数点以下に表示される最小桁数と最大桁数をそれぞれ決定できます。
以下のコード スニペットは、UltraDataLegend の最小分数と最大分数を設定する方法を示しています。
C# の場合:
dataLegend1.Target = dataChart1;
dataLegend1.ValueFormatMinFractions = 2;
dataLegend1.ValueFormatMaxFractions = 4;
コントロールの ValueFormatMode プロパティを変更することにより、UltraDataLegend 内の値のデフォルトの 10 進表示を通貨に変更することができます。UltraDataLegend は、ValueFormatCulture プロパティを使用し、対応するカルチャ タグに設定することにより、表示されている通貨記号のカルチャを変更する機能も公開します。
たとえば、以下のコード スニペットは、ValueFormatCulture が "en-GB" に設定され、ValueFormatMode が "Currency" に設定された UltraDataLegend を作成します。
C# の場合:
dataLegend1.Target = dataChart1;
dataLegend1.ValueFormatMode = Infragistics.Controls.Charts.DataLegendValueMode.Currency;
dataLegend1.ValueFormatCulture = "en-GB";
DataLegendGroup は、すべてのタイプのシリーズで、データ凡例内のシリーズ グループを分類する文字列に設定できます。各グループには、別のシリーズ グループが表示される前に、独自の集計行が表示されます。デフォルトでは、DataLegend はグループ名を非表示にしますが、GroupRowVisible プロパティを true に設定するとグループ名を表示できます。
凡例のグループ化部分を含むいくつかのプロパティが公開されています。
UltraDataLegend には、対応する行を描画するときに発生する 5 つのイベントがあります。それらのイベントを、その使用目的とあわせて以下に示します:
StyleHeaderRow: このイベントは、ヘッダー行を描画するときに 1 回発生します。
StyleSeriesRow: このイベントは、シリーズの行ごとに 1 回発生し、シリーズの値の条件付きスタイル設定を可能にします。
StyleSeriesColumn: このイベントは、シリーズ列ごとに 1 回発生します。これにより、チャート内のシリーズのさまざまな列の条件付きスタイルが可能になります。
StyleSummaryRow: このイベントは、集計行を描画するときに 1 回発生します。
StyleSummaryColumn: このイベントは、集計列を描画するときに 1 回発生します。
上記の各イベントは、引数として DataLegendStylingRowEventArgs` パラメーターを公開します。これにより、各項目のテキスト、テキストの色、および行の全体的な可視性をカスタマイズできます。イベント引数は、イベント固有のプロパティも公開します。たとえば、StyleSeriesRow イベントはシリーズごとに発生するため、イベント引数は、シリーズを表す行の、シリーズ インデックスとシリーズ タイトルを返します。
以下のコード スニペットは、上記のイベントの使用法を示しています。
C# の場合:
private void Legend_StyleSummaryRow(object sender, Infragistics.Controls.Charts.DataLegendStylingRowEventArgs row)
{
row.TitleText = "Grand Total: ";
row.TitleTextColor = Brushes.DimGray;
}
private void Legend_StyleSeriesRow(object sender, Infragistics.Controls.Charts.DataLegendStylingRowEventArgs row)
{
row.BadgeShape = Infragistics.Controls.Charts.LegendItemBadgeShape.Square;
row.TitleText = (row.SeriesIndex + 1) + ". " + row.SeriesTitle;
row.TitleTextColor = new SolidColorBrush(Colors.DimGray);
}
private void Legend_StyleHeaderRow(object sender, Infragistics.Controls.Charts.DataLegendStylingRowEventArgs row)
{
row.TitleText = "Date: " + row.TitleText;
row.TitleTextColor = Brushes.DimGray;
}