データモデルをラインリストにバインドしようと数日を費やしました。私はうまく動作します。しかし、私は線の色を変更したい。色を変更する場所はわかっていましたが、チャートとシリーズは私のバインディングを無視していました(SolidColorBrushでした)。 XAMLで色をハードコードした場合、それは機能します。私のビューモデルで同じプロパティをcolorプロパティにバインドしようとすると、うまくいきませんでした。あまりにも多くの時間が費やされた後、私は2つの理由であきらめた。WPF Toolkit - LineSeriesをコードの背後にバインド
- それはちょうど私が私が チャートを視野にモデルの数は、一度に複数のラインシリーズ を表示するには「x」をバインドする必要がありますするつもりだったが実現
- を動作しないでしょう。
は、私は最終的にちょうど私のラインのシリーズ作品で、今...
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);