sourcenouveau
sourcenouveau

Reputation: 30504

Overriding DataPointStyle in a WPF Toolkit Chart

I'd like to override the DataPointStyle of the LineSeries in my WPF Toolkit Chart:

<chart:LineSeries>
    <chart:DataPointSeries.DataPointStyle>
        <Style
            BasedOn="{StaticResource {x:Type chart:LineDataPoint}}"
            TargetType="{x:Type chart:LineDataPoint}">
            <Setter Property="Width" Value="20" />
            <Setter Property="Height" Value="20" />
        </Style>
    </chart:DataPointSeries.DataPointStyle>
</chart:LineSeries>

However when I do this I lose the automatic palette coloring where each series has a different color. Applying a DataPointStyle causes them all to turn orange.

Upvotes: 4

Views: 8823

Answers (3)

abc
abc

Reputation: 1

instead of <Setter Property="Background" Value="Green" /> just bind the value to color as a property of the model. So <Setter Property="Background" Value="{Binding Path=Color}" />

Upvotes: -2

tdc
tdc

Reputation: 8597

For those interested this can also be done in the code behind that adds a new LineSeries as follows:

ResourceDictionary rd = MyChart.Palette[MyChart.Series.Count % MyChart.Palette.Count];
Style style = new Style(typeof(LineDataPoint), rd["DataPointStyle"] as Style);
style.Setters.Add(new Setter(OpacityProperty, 0.0));

LineSeries ls = new LineSeries()
{
    DataPointStyle = style
};
MyChart.Series.Add(ls);

Upvotes: 2

sourcenouveau
sourcenouveau

Reputation: 30504

Until someone suggests a better method, I've manually set the colors. I guess I won't be using the automatic palette for now.

<Style
    x:Key="SimpleDataPointStyle"
    BasedOn="{StaticResource {x:Type charting:LineDataPoint}}"
    TargetType="{x:Type charting:LineDataPoint}">
    <Setter Property="Width" Value="20" />
    <Setter Property="Height" Value="20" />
</Style>

...

<chart:LineSeries ... >
    <chart:DataPointSeries.DataPointStyle>
        <Style
            BasedOn="{StaticResource SimpleDataPointStyle}"
            TargetType="{x:Type charting:LineDataPoint}">
            <Setter Property="Background" Value="Green" />
        </Style>
    </chart:DataPointSeries.DataPointStyle>
</chart:LineSeries>
<chart:LineSeries ... >
    <chart:DataPointSeries.DataPointStyle>
        <Style
            BasedOn="{StaticResource SimpleDataPointStyle}"
            TargetType="{x:Type charting:LineDataPoint}">
            <Setter Property="Background" Value="Red" />
        </Style>
    </chart:DataPointSeries.DataPointStyle>
</chart:LineSeries>

Upvotes: 4

Related Questions