簡體   English   中英

WPF工具包-在代碼后面綁定LineSeries

[英]WPF Toolkit - Binding LineSeries in code behind

我花了幾天的時間試圖將我的數據模型綁定到線系列。 我工作很好; 但是,我想更改線條顏色。 我知道在哪里更改顏色,但是圖表和系列將忽略我的綁定(是SolidColorBrush)。 如果我在XAML中對顏色進行了硬編碼,那么它將起作用。 但是,如果我嘗試在視圖模型中將相同的屬性綁定到color屬性,它將無法正常工作。 花了太多時間后,我放棄了,原因有兩個。

  1. 只是行不通
  2. 我意識到我將需要將“ 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);

哇,在閱讀問題時,我意識到我正在打電話

DoseChart.Series.Clear();

好吧,這是一個有趣的發現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM