XamPieChartのグラフに表示されるラベルを%に変更したい場合は、

  • FormatLabelイベントでパーセントの値を計算してラベルに指定する。
  • (凡例内ではもとのラベルを表示させたい場合は)FormatLegendLabelでもとのラベルをラベルに指定しなおす。

で可能です。

<!-- MainWindow.xaml側 -->

<ig:XamPieChart
    LabelMemberPath="DisplayText"
    ValueMemberPath="Value"
    Legend="{Binding ElementName=itemLegend1}"
    FormatLabel="xamPieChart1_FormatLabel"
    FormatLegendLabel="xamPieChart1_FormatLegendLabel"
    ... />

<ig:ItemLegend
    x:Name="itemLegend1" Grid.Column="1"/>
// MainWindow.xaml.cs側

private void xamPieChart1_FormatLabel(object sender, Infragistics.Controls.Charts.PieChartFormatLabelEventArgs args)
{
    // 合計値を取得する。(※今回は、ViewModel側のプロパティとしてあるという想定です)
    int total = ((MainWindowViewModel)DataContext).Total;

    // このラベルに紐づいているデータを取り出す。
    SampleDataItem dataItem = (SampleDataItem)(args.Item.Item);

    // 割合を計算する。
    double rate = (double)(dataItem.Value) / (double)total;

    // ラベルとしてパーセント値を指定する。
    args.Label = rate.ToString("P1");
}

private void xamPieChart1_FormatLegendLabel(object sender, Infragistics.Controls.Charts.PieChartFormatLabelEventArgs args)
{
    // このラベルに紐づいているデータを取り出す。
    SampleDataItem dataItem = (SampleDataItem)(args.Item.Item);

    // ラベルとしてもともとのラベルを指定する。
    args.Label = dataItem.DisplayText;
}

 

実行結果

 

サンプル

 

APIリファレンス

 

Tagged:

製品について

Ultimate UI for WPF