context["ITEM_LABEL"]
開発者は、 IRenderLabel を実装し、チャート ラベルの書式文字列より優れた機能を発揮できます。
IRenderLabel は、メンバが ToString だけの簡単なインタフェースです。このメソッドでは、単一の引数「context」を使用できます。これは、出力される現在のラベルに関連する値を含むハッシュテーブルです。例:
ToString の戻り値は、指定したコンテキスト内でグラフ上に出力される文字列値です。ToString メソッドが常に「Hello World」を返す場合、 UltraChart.Axis.X.Labels.ItemFormatString プロパティが IRenderLabel 実装の使用に設定されると、「Hello World」は X 軸上に繰り返し表示されます。
以下は、IRenderLabel クラスのコード例です。
Visual Basic の場合:
Imports Infragistics.UltraChart.Resources ... Public Class MyLabelRenderer Implements IRenderLabel Public OverLoads Function ToString(ByVal context As Hashtable) _ As String Implements IRenderLabel.ToString Select Case CDbl(Context("DATA_VALUE")) Case Is > 1000 Return CStr(context("DATA_VALUE")) & " [Very High]" Case Is > 100 Return CStr(context("DATA_VALUE")) & " [High]" Case Is > 10 Return CStr(context("DATA_VALUE")) & " [Medium]" Case Is >= 0 Return CStr(context("DATA_VALUE")) & " [Low]" Case Else Return CStr(context("DATA_VALUE")) & " [Negative]" End Select End Function End Class
C# の場合:
using Infragistics.UltraChart.Resources; ... public class MyLabelRenderer : IRenderLabel { public string ToString(Hashtable context) { double dataValue = (double)context["DATA_VALUE"]; if (dataValue > 75) return dataValue.ToString() + " [Very High]"; else if (dataValue > 50) return dataValue.ToString() + " [High]"; else if (dataValue > 25) return dataValue.ToString() + " [Medium]"; else if (dataValue >= 0) return dataValue.ToString() + " [Low]"; else return dataValue.ToString() + " [Negative]"; } }
適切な FormatString プロパティを、「<」と「>」文字で囲まれた一意の文字列値に設定します。
「<」と「>」文字なしの一意の文字列値を含むエントリ、および IRenderLabel 実装のインスタンスを持つハッシュテーブルを作成します。
UltraChart.LabelHash プロパティ値を IRenderLabel 実装を含むハッシュテーブルに設定します。
Visual Basic の場合:
Private Sub Customize_Labels_Using_the_IRenderLabel_Interface_Load( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Me.UltraChart1.Axis.Y.Labels.ItemFormatString = "<MY_VALUE>" Me.UltraChart1.Axis.X.Labels.ItemFormatString = "<MY_VALUE>" Dim MyLabelHashTable As New Hashtable() MyLabelHashTable.Add("MY_VALUE", New MyLabelRenderer()) Me.UltraChart1.LabelHash = MyLabelHashTable End Sub
C# の場合:
private void Customize_Labels_Using_the_IRenderLabel_Interface_Load(object sender, EventArgs e) { this.ultraChart1.Axis.Y.Labels.ItemFormatString = "<MY_VALUE>"; this.ultraChart1.Axis.X.Labels.ItemFormatString = "<MY_VALUE>"; Hashtable MyLabelHashTable = new Hashtable(); MyLabelHashTable.Add("MY_VALUE", new MyLabelRenderer()); this.ultraChart1.LabelHash = MyLabelHashTable; this.ultraChart1.DataSource = GetColumnData(); }