2010-11-11 5 views
1

Je n'ai pas encore assez de points de réputation pour publier une image, mais étant donné un exemple de graphique Silverlight 4 utilisant ColumnSeries, comment puis-je faire en sorte que chacune des sous-colonnes soit empilée D'autres sont assis côte à côte?Silverlight Chart Question

colonne NVQ2 montre par exemple les colonnes de valeur pour 5 endroits différents, la colonne NVQ3 montre des colonnes de valeur pour 5 endroits différents

J'ai besoin des endroits pour s'asseoir côte à côte et ne pas être empilés les uns sur les autres.

Code pour le graphique:

foreach (ER_Location theLocation in UserSelections.TheDataSet.ER_Locations) 
        { 
         ER_Year myYear = (ER_Year)SeriesSelection.SelectedItem; 
         ColumnSeries newSeries = new ColumnSeries(); 
         newSeries.ItemsSource = UserSelections.GetDataRowsByYearAndLocation(theLocation.Location_ID, (int)myYear.Year); 
         newSeries.IndependentValueBinding = new System.Windows.Data.Binding("Variable_ID"); 
         newSeries.DependentValueBinding = new System.Windows.Data.Binding("Value"); 
         newSeries.Title = theLocation.Name; 
         newSeries.IsSelectionEnabled = true; 
         MainChart.Series.Add(newSeries); 
        } 

Mise à jour:

Voici comment le tableau est rendu à l'heure actuelle: alt text

+0

Utilisez-vous le terme " Stacked "dans le sens habituel en se référant aux cartes? Normalement, plusieurs séries de colonnes dans un graphique placent chaque colonne pour une valeur IndependentValue spécifique côte à côte. Vous devez utiliser une StackedColumnSeries pour les empiler. – AnthonyWJones

+0

Si je peux augmenter mon Rep à 10 ce soir je posterai un pic demain qui l'explique visuellement! Je ne peux pas poster une photo à la minute. – Kevin

+0

Ajouté dans la façon dont il est actuellement rendu, peut-être cela donne une meilleure indication du problème. Merci beaucoup. – Kevin

Répondre

1

Ma conjecture est votre code a la déclaration using suivante : -

using System.Windows.Controls.DataVisualization.Charting.Compatible 

Il existe en fait deux types différents portant le nom ColumnSeries. On est dans l'espace de noms ci-dessus et il dérive de StackedColumnSeries.

Toutefois, le ColumnSeries non-empilé d'origine existe dans l'espace de noms principal de Graphiques. Ce type placera chaque colonne côte à côte. Par conséquent, je suppose que tout ce que vous devez faire est d'éliminer le .Compatible supplémentaire de votre using: -

using System.Windows.Controls.DataVisualization.Charting; 
+0

Un grand merci pour cet Anthony, ça fonctionne maintenant en montrant les barres côte à côte. Cependant toutes les barres montrent maintenant dans la même couleur alors qu'avant elles sont apparues dans différentes couleurs? Y a-t-il quelque chose d'évident que je devrais faire? – Kevin

1

Vous devrez créer une classe avec la propriété de couleur.

Exemple,

public class MyColor 
{ 
    public Brush ChartColor { get; set; } 
} 

puis créez une liste de vos couleurs préférées comme

List<MyColor> colorList = new List<MyColor> 
{ 
    new MyColor 
     { ChartColor = new SolidColorBrush(Colors.Blue)}, 
    new MyColor 
     { ChartColor = new SolidColorBrush(Colors.Green) }, 
    ... 
    ... 
} 

De Xaml, lient la couleur de fond du point de données à ChartColor