Chart3D for WPF/Silverlight
カスタムの軸注釈テンプレート
C1Chart3D for WPF の使い方 > カスタム軸注釈の作成 > カスタムの軸注釈テンプレート
次のサンプルは、AnnoTemplate プロパティを使用して、対応する軸値に応じた色の軸ラベルを作成する方法を示します。 MainWindow.xaml に次の XAML を追加します。
XAML
コードのコピー
<Window x:Class="QuckstartChart3D.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:c1chart3d="http://schemas.componentone.com/xaml/c1chart"
        xmlns:local="clr-namespace:QuckstartChart3D">
  <Window.Resources>
    <!-- コンバータのインスタンス -->
    <local:LabelToColorConvereter x:Key="cnv" />
  </Window.Resources>
    <Grid>
    <c1chart3d:C1Chart3D Name="c1Chart3D1" >
      <c1chart3d:GridDataSeries ZDataString="-1 -1 -1,0 0 0, 1 1 1" />
      <c1chart3d:C1Chart3D.AxisZ>
        <c1chart3d:Axis3D>
          <!-- 軸注釈テンプレートを設定します  -->
          <c1chart3d:Axis3D.AnnoTemplate>
            <DataTemplate >
              <!-- DataContext は軸ラベル(文字列)で、コンバータを使用して色を設定します  -->
                <TextBlock Width="20" Height="12" Text="{Binding}" 
Foreground="{Binding Converter={StaticResource cnv}}" />
            </DataTemplate>
          </c1chart3d:Axis3D.AnnoTemplate>
        </c1chart3d:Axis3D>
      </c1chart3d:C1Chart3D.AxisZ>
    </c1chart3d:C1Chart3D>
  </Grid>
</Window>

[表示]→[コード]を選択し、次のコードを追加します。連結コンバータは、この値に基づいて軸ラベルのブラシを選択します。

C#
コードのコピー
public class LabelToColorConvereter : IValueConverter
  {
    static Brush belowZero = new SolidColorBrush(Colors.Blue);
    static Brush aboveZero = new SolidColorBrush(Colors.Red);
    static Brush zero = new SolidColorBrush(Colors.DarkGray);
     public object Convert(object value, Type targetType, object parameter, 
      System.Globalization.CultureInfo culture)
    {

      // 軸ラベルを表す文字列
      string s = value as string;
      if (!string.IsNullOrEmpty(s))
      {
        var dv = double.Parse(s);
        // 値に応じたブラシを返します
        if (dv < 0)
          return belowZero;
        else if (dv > 0)
          return aboveZero;
        else
          return zero;
      }
      return value;
    }
    public object ConvertBack(object value, Type targetType, object parameter, 
      System.Globalization.CultureInfo culture)
    {
      throw new NotImplementedException();
    }
  }
関連トピック