LiveChart中线的Binding

1、绑定 Series

从官网上截取的一部分前台XMAL代码

 <lvc:CartesianChart Series="{Binding SeriesCollection}" LegendLocation="Right" Background="Black">
            <lvc:CartesianChart.AxisY>
                <lvc:Axis Title="" LabelFormatter="{Binding YFormatter}">
                    <lvc:Axis.Separator>
                        <lvc:Separator StrokeThickness="1" StrokeDashArray="4"  Stroke="#404F56" ></lvc:Separator>
                    </lvc:Axis.Separator>
                </lvc:Axis>
            </lvc:CartesianChart.AxisY>
            <lvc:CartesianChart.AxisX>
                <lvc:Axis Title="" Labels="{Binding Labels}">
                    <lvc:Axis.Separator>
                        <lvc:Separator StrokeThickness="1" StrokeDashArray="2" Step="1"                   Stroke="#404F56" ></lvc:Separator>
                    </lvc:Axis.Separator>
                </lvc:Axis>
            </lvc:CartesianChart.AxisX>
        </lvc:CartesianChart>

重点是   Series="{Binding SeriesCollection}",

在后台

 public partial class DataChart : UserControl
    {
        public SeriesCollection SeriesCollection { get; set; }
        public string[] Labels { get; set; }
        public int AxisStep { get; set; }

        public DataChart()
        {
            InitializeComponent();
            SeriesCollection = new SeriesCollection
            {
                new LineSeries
                {
                    Title = "Series 1",
                    Values=new ChartValues< ObservablePoint>{new  ObservablePoint(6,9),
                    new  ObservablePoint(9,6),
                    new  ObservablePoint(7,20),
                    new  ObservablePoint(16,25)},
                    Stroke = System.Windows.Media.Brushes.Yellow,
                    StrokeDashArray= new DoubleCollection{ 2}
            },
       
            };

            Labels = new[] { "-10", "0", "10", "20", "30", "40" };
            DataContext = this;
        }

    }

重点是定义  public SeriesCollection SeriesCollection { get; set; }的属性,注意,一定要是属性,

如果你定义成 public SeriesCollection SeriesCollection,将不会起任何作用。

在SeriesCollection中可以添加LineSeries,ColumnSeries等等图表.

二、直接BindIng 某个图表的Values

<lvc:CartesianChart Name="chartSeries">
            <lvc:CartesianChart.AxisX >
                <lvc:Axis FontSize="16" Foreground="Black" >
                    <lvc:Axis.Separator>
                        <lvc:Separator x:Name="X_Separator"
                                       x:FieldModifier="public"
                                       StrokeThickness="1" 
                                       StrokeDashArray="2 "
                                       Stroke="#404F56"></lvc:Separator>
                    </lvc:Axis.Separator>
                </lvc:Axis>
            </lvc:CartesianChart.AxisX>
            <lvc:CartesianChart.AxisY>
                <lvc:Axis FontSize="16" Foreground="IndianRed">
                    <lvc:Axis.Separator>
                        <lvc:Separator x:Name="ColumnY_Separator"
                                       x:FieldModifier="public" 
                                       StrokeThickness="1"
                                       StrokeDashArray="2 "
                                       Stroke="#404F56"></lvc:Separator>
                    </lvc:Axis.Separator>
                </lvc:Axis>
                <lvc:Axis FontSize="16" Foreground="DodgerBlue" Position="RightTop">
                    <lvc:Axis.Separator>
                        <lvc:Separator x:Name="CurveY_Separator" 
                                       x:FieldModifier="public" 
                                       StrokeThickness="1" 
                                       StrokeDashArray="2 "
                                       Stroke="#404F56"></lvc:Separator>
                    </lvc:Axis.Separator>
                </lvc:Axis>
            </lvc:CartesianChart.AxisY>

            <lvc:CartesianChart.Series>
                <lvc:ColumnSeries x:FieldModifier="public" 
                                  ColumnPadding="10"
                                  x:Name="myColumn" Title="" 
                                  Panel.ZIndex="1"
                                  ScalesYAt="0"
                                  Width="50"
                                  MinWidth="50"
                                  Values="{Binding ColumnValues1}"
                                  Fill="BlueViolet" />
                <lvc:LineSeries x:FieldModifier="public"
                                x:Name="myLine" Title=""
                                Panel.ZIndex="2"
                                 ScalesYAt="1"
                                LineSmoothness="1" 
                                Values="{Binding LineValues2}"/>
            </lvc:CartesianChart.Series>
          
        </lvc:CartesianChart>

重点,直接对Values进行绑定,由于我们已经在界面上设置好一切,所以在后台直接对Values进行更改即可

后台代码

 public partial class GaussianChart : UserControl
    {
        public GaussianChart()
        {
            InitializeComponent();
            this.Loaded += InitialData;
        }

        /// <summary>
        /// 直方图的点集合
        /// </summary>
        private IChartValues columnValues1 = new ChartValues<ObservablePoint>();
        public IChartValues ColumnValues1
        {
            get
            {
                return columnValues1;
            }
            set
            {
                if (columnValues1 != value)
                {
                    columnValues1 = value;
                    this.RaisePropertyChanged("ColumnValues1");
                }
            }
        }

        /// <summary>
        /// 曲线的点集合
        /// </summary>
        private IChartValues lineValues2 = new ChartValues<ObservablePoint>();
        public IChartValues LineValues2
        {
            get
            {
                return lineValues2;
            }
            set
            {
                if (lineValues2 != value)
                {
                    lineValues2 = value;
                    this.RaisePropertyChanged("LineValues2");
                }
            }
        }
        /// <summary>
        /// 横坐标:年份,纵坐标:值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void InitialData(object sender, RoutedEventArgs e)
        {

            ColumnValues1 = new ChartValues<ObservablePoint>
            {
                new ObservablePoint(24, 34),
                 new ObservablePoint(123, 14),
                  new ObservablePoint(225, 14),
                  new ObservablePoint(342, 24),
                  new ObservablePoint(461, 24),
            };

            lineValues2 = new ChartValues<ObservablePoint>
            {
                new ObservablePoint(24,0.003),
                 new ObservablePoint(123,0.005),
                  new ObservablePoint(225,0.006),
                  new ObservablePoint(342,0.008),
                  new ObservablePoint(461,0.009),
            };

            DataContext = this;
        }


        public event PropertyChangedEventHandler PropertyChanged;
        public void RaisePropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }

 

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值