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();
}