Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

Strips

  • 6 minutes to read

A strip is an area limited by two fixed values (minimum and maximum limits) on a corresponding axis.

WPF_Strip

#How to Add a Strip

The Chart control enables you to add an unlimited number of strips to an x- or y-axis. To add a strip, you need to add a Strip object to the Axis2D.Strips collection and define the strip’s minimum and maximum limits. A strip does not display if the minimum limit is not less than the maximum limit, and it would occupy all available space in a diagram if these limits are not specified.

SimpleStripExample

The XAML below shows how to add a strip to a chart:

<dxc:XYDiagram2D.AxisX>
     <dxc:AxisX2D>
          <dxc:AxisX2D.Strips>
               <dxc:Strip MinLimit="05/01/2015"  
                          MaxLimit="08/01/2015"/>
          </dxc:AxisX2D.Strips>
     </dxc:AxisX2D>
     <!--...-->
</dxc:XYDiagram2D.AxisX>

The example above applies the following classes and properties:

Class or Property Description
Strip A strip.
Axis2D.Strips A collection that stores all strips of an axis.
Strip.MinLimit A value specifying the strip’s minimum axis value.
Strip.MaxLimit A value specifying the strip’s maximum axis value.

#Generate Strips from a ViewModel Collection (MVVM)

To generate custom strips from a ViewModel, bind an axis’s StripItemsSource to a collection of objects that contain strip settings. Then, use the Axis2D.StripItemTemplate or Axis2D.StripItemTemplateSelector property to specify how to display the generated strips.

<Window xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"  
        x:Class="ChartApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ChartApp"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Window.DataContext>
        <local:MainWindowViewModel/>
    </Window.DataContext>
    <Grid>
        <dxc:ChartControl DataSource="{Binding Data}">
            <dxc:XYDiagram2D x:Name="diagram">
                <dxc:BarSideBySideSeries2D DisplayName="Annual Statistics" 
                                           ArgumentDataMember="Argument" 
                                           ValueDataMember="Value" />
                <dxc:XYDiagram2D.AxisY>
                    <dxc:AxisY2D StripItemsSource="{Binding Strips}" 
                                 LabelVisibilityMode="AutoGeneratedAndCustom" 
                                 Interlaced="False">
                        <dxc:AxisY2D.StripItemTemplate>
                            <DataTemplate>
                                <dxc:Strip MinLimit="{Binding Value1}" 
                                           MaxLimit="{Binding Value2}" 
                                           AxisLabelText="{Binding Title}"/>
                            </DataTemplate>
                        </dxc:AxisY2D.StripItemTemplate>
                        <dxc:AxisY2D.NumericScaleOptions>
                            <dxc:ContinuousNumericScaleOptions GridSpacing="1" 
                                                               AutoGrid="False"/>
                        </dxc:AxisY2D.NumericScaleOptions>
                    </dxc:AxisY2D>
                </dxc:XYDiagram2D.AxisY>
            </dxc:XYDiagram2D>
        </dxc:ChartControl>
    </Grid>
</Window>
using DevExpress.Xpf.Charts;
using System;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Media;

namespace ChartApp {
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
        }
    }
    public class MainWindowViewModel {
        public ObservableCollection<DataPoint> Data { get; private set; }
        public ObservableCollection<StripData> Strips { get; private set; }
        public MainWindowViewModel() {
            this.Data = DataPoint.GetDataPoints();
            this.Strips = StripData.GetStripsData();
        }
    }
    public class DataPoint {
        public DateTime Argument { get; set; }
        public double Value { get; set; }
        public static ObservableCollection<DataPoint> GetDataPoints() {
            return new ObservableCollection<DataPoint> {
                new DataPoint { Argument = new DateTime(2022,01,01), Value = 9.289D},
                new DataPoint { Argument = new DateTime(2022,01,02), Value = 2.2727D},
                new DataPoint { Argument = new DateTime(2022,01,03), Value = 3.7257D},
                new DataPoint { Argument = new DateTime(2022,01,04), Value = 4.1825D},
                new DataPoint { Argument = new DateTime(2022,01,05), Value = 2.1172D},
                new DataPoint { Argument = new DateTime(2022,01,06), Value = 5.289D},
                new DataPoint { Argument = new DateTime(2022,01,07), Value = 3.74D},
                new DataPoint { Argument = new DateTime(2022,01,08), Value = 3.7257D},
                new DataPoint { Argument = new DateTime(2022,01,09), Value = 4.1825D},
                new DataPoint { Argument = new DateTime(2022,01,10), Value = 10.12D}
            };
        }
    }
    public class StripData {
        public double Value1 { get; set; }
        public double Value2 { get; set; }
        public string Title { get; set; }

        public static ObservableCollection<StripData> GetStripsData() {
            return new ObservableCollection<StripData> {
                new StripData {Value1 = 3, Value2 = 5, Title = "Strip #1"},
                new StripData {Value1 = 6, Value2 = 7, Title = "Strip #2"}
            };
        }
    }
}

#How to Show a Strip in a Legend

You can display a marker with text that identifies a strip in a chart legend.

WPF_StripLegendText

The following code example demonstrates how to show a strip marker with the specified text in the required legend:

<dxc:ChartControl.Legends>
      <dxc:Legend Name="seriesLegend"/>
      <dxc:Legend Name="stripLegend" 
                  VerticalPosition="Bottom"/>
</dxc:ChartControl.Legends>
<!--...-->
<dxc:XYDiagram2D>
      <dxc:XYDiagram2D.AxisX>
            <dxc:AxisX2D>
                  <dxc:AxisX2D.Strips>
                        <dxc:Strip LegendText="May - August" 
                                   Legend="{Binding ElementName=stripLegend}"
                                   MinLimit="05/01/2015" 
                                   MaxLimit="08/31/2015"/>
                  </dxc:AxisX2D.Strips>
            </dxc:AxisX2D>
            <!--...-->
      </dxc:XYDiagram2D.AxisX>
</dxc:XYDiagram2D>

The markup above utilizes the following properties:

Property

Description

Strip.LegendText

Text displayed with a strip marker in a chart legend.

If this property is not specified, a strip identifier does not show in the legend.

Strip.Legend

A legend that shows a strip identifier.

#How to Show a Specific Axis Label for a Strip

You can add a custom axis label for a strip as the following image shows:

WPF_AxisLabelText

The Strip.AxisLabelText property allows you to specify axis label text for a strip:

<dxc:AxisX2D>
      <dxc:AxisX2D.Strips>
            <dxc:Strip AxisLabelText="May - August" 
                       MinLimit="05/01/2015" 
                       MaxLimit="08/31/2015"/>
      </dxc:AxisX2D.Strips>
</dxc:AxisX2D>

Tip

To simultaneously show auto-generated and custom axis labels, set the Axis2D.LabelVisibilityMode property to AutoGeneratedAndCustom.

#How to Customize Strip Appearance

You can modify the default strip appearance to fulfill your requirements.

WPF_StripAppearance

Using the following markup, you can configure a strip brush and its outline:

<dxc:AxisY2D>
      <dxc:AxisY2D.Strips>
            <dxc:Strip Brush="LightGray" 
                       BorderColor="Transparent" 
                       MinLimit="1150" 
                       MaxLimit="1250"/>
      </dxc:AxisY2D.Strips>
      <!--...-->
</dxc:AxisY2D>

The example uses the following API members to configure strip appearance:

Property Description
Strip.Brush A brush used to paint the strip.
Strip.BorderColor A strip border color.
See Also