2011-02-18 1 views
4

Я хотел бы переопределить DataPointStyle в LineSeries в моем WPF Toolkit Chart:Перекрытие DataPointStyle в диаграмме WPF Toolkit

<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> 

Однако, когда я делаю это я теряю автоматическую палитру окраски, где каждая серия имеет разного цвета. Применение DataPointStyle приводит к тому, что все они становятся оранжевыми.

ответ

4

Пока кто-то не предложит лучший метод, я вручную установил цвета. Наверное, сейчас я не буду использовать автоматическую палитру.

<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> 
1

Я только что разместил решение для этого here.

2

Для тех, кто заинтересован в этом также может быть сделано в код, который добавляет новый LineSeries следующим образом:

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); 
+2

, если вы хотите получить цвет каждого фона серии: ResourceDictionary е = mcLineChart.Palette [mcLineChart.Series.Count% mcLineChart.Palette.Count]; var myBrush = rd ["Фон"] как кисть; ... SetStyleProperty (стиль, Control.BackgroundProperty, myBrush); – Titwan

-2

вместо <Setter Property="Background" Value="Green" /> просто связать значение окрасить как свойство модели. Так <Setter Property="Background" Value="{Binding Path=Color}" />

 Смежные вопросы

  • Нет связанных вопросов^_^