# Custom Axis Annotation Template

## Content



The following sample shows how to use the [AnnoTemplate](/componentone/api/wpf/online-chart3d/dotnet-framework-api/C1.WPF.C1Chart3D.4.6.2/C1.WPF.C1Chart3D.Axis3D.AnnoTemplate.html) 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.

```xml
<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.

```csharp
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](/componentone/docs/wpf/online-chart3d/overview/using-chart3d-for-wpf-and-silverlight/axisannotation/Axistitle)