[]
        
(Showing Draft Content)

Custom Axis Annotation Template

The following sample shows how to use the AnnoTemplate property to create axis labels with color depending on the corresponding axis value.

Add the following XAML to your MainWindow.xaml or your MainPage.xaml:

type=note

Note: In a Silverlight application, you'll add <Page.Resources> </Page.Resources> tags instead of the <Window.Resources> tags.

<Window.Resources>
    <!-- instance of converter -->
    <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>
          <!-- set axis annotation template  -->
          <c1chart3d:Axis3D.AnnoTemplate>
            <DataTemplate >
              <!-- DataContext is axis label(string), use converter to set color  -->
                <TextBlock Width="20" Height="12" Text="{Binding}"
Foreground="{Binding Converter={StaticResource cnv}}" />
            </DataTemplate>
          </c1chart3d:Axis3D.AnnoTemplate>
        </c1chart3d:Axis3D>
      </c1chart3d:C1Chart3D.AxisZ>
    </c1chart3d:C1Chart3D>
  </Grid>

Select View | Code and add the following code. The binding converter selects the brush of the axis label depending on the value.

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 representing axis label
      string s = value as string;
    if (!string.IsNullOrEmpty(s))
    {
      var dv = double.Parse(s);      
      // return brush depending on the value
        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();
  }
}

See Also

Axis Title