2011-01-13 3 views
2

Я размышляю над графическими картами MS и не могу понять, как изменить цвет областей. Мне нужно динамически заполнять диаграмму, что означает, что я заранее не знаю, сколько секций будет иметь диаграмма области.wpf Диаграмма района с различными цветами?

Вот код, который у меня есть.

var a = new AreaSeries 
{ 
    Title = "a", 
    IndependentValuePath = "Key", 
    DependentValuePath = "Value", 
    Background = Brushes.Plum 
}; 

Я попытался изменить как основание земли, так и задний план и не кубики.

mcChart.Series.Add(a); 

a = new AreaSeries 
{ 
    Title = "b", 
    IndependentValuePath = "Key", 
    DependentValuePath = "Value", 
    Background = Brushes.Peru 
}; 

mcChart.Series.Add(a); 

Заполните схему.

((AreaSeries)mcChart.Series[0]).ItemsSource = new[] 
{ 
    new KeyValuePair<string, int>("1", 100), 
    new KeyValuePair<string, int>("2", 180), 
    new KeyValuePair<string, int>("3", 110), 
    new KeyValuePair<string, int>("4", 95), 
    new KeyValuePair<string, int>("5", 40), 
    new KeyValuePair<string, int>("6", 95) 
}; 

((AreaSeries)mcChart.Series[1]).ItemsSource = new[] 
{ 
    new KeyValuePair<string, int>("1", 150), 
    new KeyValuePair<string, int>("2", 280), 
    new KeyValuePair<string, int>("3", 310), 
    new KeyValuePair<string, int>("4", 195), 
    new KeyValuePair<string, int>("5", 340), 
    new KeyValuePair<string, int>("6", 195) 
}; 

Я новичок в wpf, и я не могу понять, что не так с этим.

Вот XAML

<chartingToolkit:Chart 
    Width="600" Height="450" 
    Name="mcChart" 
    Background="LightBlue" 
    Foreground="DarkBlue" 
    Title="Area Chart">     
</chartingToolkit:Chart> 

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

Спасибо.

ответ

7

Вы можете использовать Chart.Palette свойство как это:

<Grid> 
    <charting:Chart> 
     <charting:Chart.Palette> 
      <visualizationToolkit:ResourceDictionaryCollection> 
       <ResourceDictionary> 
        <Style x:Key="DataPointStyle" TargetType="Control"> 
         <Setter Property="Background" Value="MistyRose"/> 
        </Style> 
       </ResourceDictionary> 
       <ResourceDictionary> 
        <Style x:Key="DataPointStyle" TargetType="Control"> 
         <Setter Property="Background" Value="AliceBlue"/> 
        </Style> 
       </ResourceDictionary> 
      </visualizationToolkit:ResourceDictionaryCollection> 
     </charting:Chart.Palette> 
     <charting:AreaSeries Title="Series 1"/> 
     <charting:AreaSeries Title="Series 2"/> 
    </charting:Chart> 
</Grid> 
  • Here еще немного информации.
+0

Благодарим вас за ссылку, но как вы это сделаете с помощью кода? Я не буду знать, сколько серий у меня есть, пока я не вытащу данные из db. Я должен сделать это динамически. Есть идеи? Еще раз спасибо. – nitefrog

+0

Палитра может быть сколь угодно длинной. То есть, ему не нужно сопоставлять количество столбцов. Пока вам не нужно выбирать цвета во время выполнения, вы можете создать одну палитру в XAML и использовать ее в коде. Если вам нужно изменить цвета в коде, просто создайте его, например. 'new ResourceDictionaryCollection() 'и т. д. –

+0

Я все еще не понимаю, какое свойство нужно изменить для изменения фона графика области? – mithun

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