0

現在、WPF チャート ツールキットを使用してチャートを作成しようとして
います。要件は、Y 軸が下の画像のように表示されることです。
Y軸


*0~84はレベルD *
85~99はレベルB
...

チャート ツールキットでこのタイプの Y 軸スケールを作成できるかどうかはわかりません。
上記がチャートツールキットでサポートされていない場合は、テキストボックスコントロールを「Level *」ラベルのキャンバスに直接配置しようとしますが、Y 軸のスケールとして 85、100、115 のみを表示するにはどうすればよいかという問題があります。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

1

チャートの軸ラベルに Converter を使用してみることができます。このようなもの:XAML

<chartingToolkit:Chart Name="chart1"  >
 <chartingToolkit:Chart.Resources>
  <HideConverter x:Key="HideConverter1" />
 </chartingToolkit:Chart.Resources>
 <chartingToolkit:Chart.Axes>
  <chartingToolkit:LinearAxis Orientation="Y" ShowGridLines="False"  Interval="5" Minimum="0" Maximum="150" >
   <chartingToolkit:LinearAxis.AxisLabelStyle>
    <Style TargetType="chartingToolkit:AxisLabel">
     <Setter Property="Template">
      <Setter.Value>
       <ControlTemplate TargetType="chartingToolkit:AxisLabel">
        <TextBlock DataContext="{TemplateBinding FormattedContent}" Text="{Binding Converter={StaticResource HideConverter1}}" />
       </ControlTemplate>
      </Setter.Value>
     </Setter>
    </Style>
   </chartingToolkit:LinearAxis.AxisLabelStyle>
  </chartingToolkit:LinearAxis>
 </chartingToolkit:Chart.Axes>
</chartingToolkit:Chart>

そしてあなたのコードビハインドではコンバーターは

public class HideConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        // value is the current tick on the Y axis
        int x = int.Parse(value.ToString());
        switch (x)
        {
            case 85:
            case 100:
            case 115:
                return value;
            case 40: // I set 40 to be in the middle between 0 and 85
                return "Level D";
            case 90:
                return "Level C";
            case 110:
                return "Level B";
            case 130:
                return "Level A";
            default:
                return null;;
        }
        return null;
    }

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

HTH

于 2012-11-27T16:01:07.377 に答える