2017-10-11 1 views
0

J'ai passé quelques jours à essayer de lier mon modèle de données à une série. Je travaille bien Cependant, je veux changer la couleur de la ligne. Je savais où changer la couleur, mais le graphique et la série ignoreraient ma liaison (était un SolidColorBrush). Si j'avais codé en dur la couleur dans XAML cela fonctionnerait; cependant, si j'ai essayé de lier la même propriété à la propriété de couleur dans mon modèle de vue, cela ne fonctionnerait pas. Après avoir passé trop de temps j'ai abandonné pour 2 raisons.WPF Toolkit - Liaison LineSeries dans le code derrière

  1. Il ne serait pas juste travailler
  2. je me suis aperçu que j'allais devoir lier « x » nombre de modèles en vue de la carte pour montrer plus d'une série de ligne à la fois.

Je viens de définir finalement ma série de ligne dans le code derrière comme si ...

LineSeries BuildLine(DosePointsViewModel model) 
    { 
     LineSeries series = new LineSeries(); 

     // styles 
     Style poly = new Style(typeof(Polyline)); 
     poly.Setters.Add(new Setter(Polyline.StrokeProperty, model.LineColor)); 
     poly.Setters.Add(new Setter(Polyline.StrokeThicknessProperty, 3d)); 
     series.PolylineStyle = poly; 

     Style pointStyle = new Style(typeof(LineDataPoint)); 
     pointStyle.Setters.Add(new Setter(LineDataPoint.BackgroundProperty, model.LineColor)); 
     series.DataPointStyle = pointStyle; 

     // binding 
     series.IsSelectionEnabled = false; 
     series.IndependentValueBinding = new System.Windows.Data.Binding("Distance"); 
     series.DependentValueBinding = new System.Windows.Data.Binding("Dose"); 

     // X axis 
     LinearAxis xAxis = new LinearAxis(); 
     xAxis.Title = "Distance"; 
     xAxis.ShowGridLines = false; 
     xAxis.Interval = 1; 
     xAxis.Orientation = AxisOrientation.X; 
     series.IndependentAxis = xAxis; 

     // Y axis 
     LinearAxis yAxis = new LinearAxis(); //series.DependentRangeAxis as LinearAxis; 
     yAxis.Maximum = 5000d; 
     yAxis.Minimum = -100d; 
     yAxis.Minimum = model.Points.Min(d => d.Dose) - model.Points.Min(d => d.Dose) * 0.50; 
     yAxis.Maximum = model.Points.Max(d => d.Dose) + model.Points.Max(d => d.Dose) * 0.05; 
     yAxis.ShowGridLines = true; 
     yAxis.Orientation = AxisOrientation.Y; 
     yAxis.Title = "Dose"; 

     Style s = new Style(typeof(Line)); 
     s.Setters.Add(new Setter(Line.StrokeProperty, new SolidColorBrush(Colors.LightBlue))); 
     s.Setters.Add(new Setter(Line.StrokeThicknessProperty, 1d)); 
     yAxis.GridLineStyle = s; 
     series.DependentRangeAxis = yAxis; 

     return series; 
    } 

Maintenant, la couleur de mes œuvres de la série en ligne. Bien sûr, la raison principale pour cela est que je suis en train de régler directement la couleur par ...

poly.Setters.Add(new Setter(Polyline.StrokeProperty, model.LineColor)); 
pointStyle.Setters.Add(new Setter(LineDataPoint.BackgroundProperty, model.LineColor)); 

Alors, ma question est la suivante. Je veux être en mesure d'ajouter plusieurs séries de lignes au graphique; Cependant, lorsque j'essaie de faire cela, seul le dernier élément est lié. Dans le code, ceci est fait pour chaque série de lignes en cours de création. Seule la dernière série de lignes est ajoutée au graphique.

DosePointsViewModel model = new DosePointsViewModel(_snc, m.Id); 
      LineSeries series = BuildLine(model); 
      DoseChart.Series.Clear(); 
      DoseChart.Series.Add(series); 

Répondre

0

Wow, comme je lis ma question je me rends compte que je fais appel

DoseChart.Series.Clear(); 

Eh bien, ce fut une découverte intéressante.