2017-10-11 21 views
0

データモデルをラインリストにバインドしようと数日を費やしました。私はうまく動作します。しかし、私は線の色を変更したい。色を変更する場所はわかっていましたが、チャートとシリーズは私のバインディングを無視していました(SolidColorBrushでした)。 XAMLで色をハードコードした場合、それは機能します。私のビューモデルで同じプロパティをcolorプロパティにバインドしようとすると、うまくいきませんでした。あまりにも多くの時間が費やされた後、私は2つの理由であきらめた。WPF Toolkit - LineSeriesをコードの背後にバインド

  1. それはちょうど私が私が チャートを視野にモデルの数は、一度に複数のラインシリーズ を表示するには「x」をバインドする必要がありますするつもりだったが実現
  2. を動作しないでしょう。

は、私は最終的にちょうど私のラインのシリーズ作品で、今...

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

そうのような背後にあるコードで色を私のラインのシリーズを定義しました。もちろん、これの主な理由は、私が直接色を設定していることです...

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

私の質問はこれです。グラフに複数の系列を追加できるようにしたい。しかし、私がこれをしようとすると、最後の項目だけがバインドされています。コード内では、これは作成されている各ラインシリーズに対して実行されます。最後の行系列のみがグラフに追加されます。私は私の質問を読んでいるよう

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

答えて

0

うわー、私は私が面白いだった

DoseChart.Series.Clear(); 

まあを呼んだということを実感。

関連する問題