2010-12-06 23 views
2

J'ai des données affichées sur les graphiques en utilisant les graphiques Silverlight standard de Silverlight Toolkit, mais toutes les données ne s'affichent pas sur un graphique et il semble y avoir de grandes quantités d'espace entre les deux. chaque ensemble de colonnes qui entraîne la suppression des colonnes de données de droite. Est-ce que quelqu'un sait comment je peux diminuer cet espacement et/ou dire que le graphique a une largeur fixe de sorte qu'il s'adapte dans toutes les colonnes.Silverlight Column Series Largeur du graphique Question

Vous trouverez ci-dessous une image pour illustrer le problème. alt text

LordCover Edit: ajouter à la question initiale, je veux un moyen direct de définir la largeur fixe pour chaque ColumnSeries. J'ai essayé en utilisant

<Style x:Key="DataPointStyle1" TargetType="charting:ColumnDataPoint"> 
    <Setter Property="Width" Value="5px" /> 
</Style> 

Et puis, dans le balisage ColumnSeries:

<charting:ColumnSeries 
    IndependentValueBinding="{Binding Path=Key}" 
    DependentValueBinding="{Binding Path=Value}" 
    DataPointStyle="{StaticResource DataPointStyle1}" 
    Title="Sales Amount"/> 

Mais il obtient juste la largeur par rapport à la largeur de la carte et à la # de la série-es.

+0

Incluez le graphique xaml et tous les styles personnalisés que vous appliquez. – AnthonyWJones

+0

Je ne sais pas si vous êtes toujours intéressé, mais peut-être que nous obtenons une réponse maintenant :) –

Répondre

4

Pour Kevin

Depuis Kevin a demandé à l'origine de la question, permettez-moi tout d'abord affirmer: C'est bizarre. La présentation de l'ensemble des séries de colonnes est décalée par rapport à l'origine de gauche qu'il devrait avoir. Comme je l'ai dit dans mon commentaire il y a de nombreuses lunes, j'aurais besoin de plus de détails pour essayer de discerner pourquoi cette bizarrerie se produit.

Pour LordCover

Pour répondre à l'ajout de LordCover que je ne pense pas vraiment est lié.

La réponse dépend vraiment de ce que vous avez l'intention de définir la largeur. Je vais répondre sur la base que vous voulez juste des colonnes plus minces (plus grands espaces entre les colonnes). J'ai choisi cette base parce que je ne peux pas penser à aucune autre raison de le faire.

Le code du ColumnSeries attribue spécifiquement le Width de chaque point de données, éliminant ainsi toute valeur que vous avez définie dans un style. Il suffit donc de définir la largeur dans un style de point de données. De plus, si vous avez plusieurs séries, vous perdrez la palette par défaut et vous devrez faire tout ce travail vous-même.

Ce que vous pouvez faire est de créer une ColumnSeries dérivée. Quelque chose comme: -

public class FixedWidthColumnSeries : ColumnSeries 
{ 
    #region public double ColumnWidth 
    public double ColumnWidth 
    { 
     get { return (double)GetValue(ColumnWidthProperty); } 
     set { SetValue(ColumnWidthProperty, value); } 
    } 


    public static readonly DependencyProperty ColumnWidthProperty = 
     DependencyProperty.Register(
      "ColumnWidth", 
      typeof(double), 
      typeof(FixedWidthColumnSeries), 
      new PropertyMetadata(5.0)); 

    #endregion public double ColumnWidth 

    protected override void UpdateDataPoint(DataPoint dataPoint) 
    { 
     base.UpdateDataPoint(dataPoint); 
     double originalWidth = dataPoint.Width; 
     double newWidth = ColumnWidth; 
     dataPoint.Width = newWidth; 
     Canvas.SetLeft(dataPoint, Canvas.GetLeft(dataPoint) + (originalWidth - newWidth)/2); 
    } 
} 

Cette classe permet à l'ColumnSeries d'origine faire tout le levage de charges lourdes tweaks puis la largeur et les positions à gauche du point de données après.

+0

Pouvez-vous s'il vous plaît aidez-moi ici http://stackoverflow.com/questions/22347210/scrolling-x-axis-plot-area -silverlight-column-series – Goofy