C#-WPF-控件-LiveChart图表-线性2(LineSeries)-数据绑定

知识点:

  1. 数据绑定 ()

  2. X轴上显示点数(主类中)

  3. 添加随机值在图表中 (值针对Y轴值)

  4. 清空图表

  5. 图标titel显示

实例

html 复制代码
 <lvc:CartesianChart x:Name="LiveCharts1"  
                    Margin="10,200,185,10" 
                    Series="{Binding SeriesCollection}"  //BeanDataKalman.cs中
                    Background="#FFF8FCFD"
                    LegendLocation="Top" >

</lvc:CartesianChart>

BeanDataKalman.cs

cs 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Text;
using System.Xml.Linq;
using LiveCharts;

namespace Wpf_Math.BeanDatas
{
    public class BeanDataKalman : INotifyPropertyChanged
    {

        private string _msgTips;
        private SeriesCollection _seriesCollection;


        public BeanDataKalman()
        {
            // 在构造函数中初始化
            _seriesCollection = new SeriesCollection();
        }


        public string MsgTips
        {
            get => _msgTips;
            set { _msgTips = value; OnPropertyChanged(); }
        }

        public SeriesCollection SeriesCollection
        {
            get => _seriesCollection;
            set
            {
                if (_seriesCollection != value)
                {
                    _seriesCollection = value;
                    OnPropertyChanged();
                }
            }
        }

        public event PropertyChangedEventHandler? PropertyChanged;

        protected void OnPropertyChanged([CallerMemberName] string name = null)
        => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
    }

}

主窗体调用

cs 复制代码
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing.Printing;
using System.Reflection.Emit;
using System.Reflection.Metadata;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Media.Media3D;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml.Linq;
using LiveCharts;
using LiveCharts.Defaults;
using LiveCharts.Wpf;
using Wpf_Math.BeanDatas;

namespace Wpf_Math.MyFilter_Kalman
{
    public partial class UC_KalmanFilter : UserControl
    {

        int i;
        BeanDataKalman beanData = new BeanDataKalman();
        private double[] Yvalue = new Double[50];      //Yvalue数据值    X轴上显示50点

        public UC_KalmanFilter()
        {
            InitializeComponent();
            this.DataContext = beanData;
            beanData.MsgTips = "提示:";
            InitializeLiveCharts1();
        }
        private void InitializeLiveCharts1()
        {

            LineSeries myLineseries = new LineSeries()         //实例化一条折线图
            {               

                Title = "M431传感器电压测试图",                 //设置折线的标题
                StrokeThickness = 1,                          // 设置折线粗细
                LineSmoothness = 1,                           //折线图直线形式     0 or 1
                PointGeometry = null,                         //折线图的无点样式
                Values = new ChartValues<double>(Yvalue)      //添加折线图的数据
            }; 
            beanData.SeriesCollection.Add(myLineseries);
        }


        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Button button = (Button)sender;
            switch (button.Name)
            {
                case "btn_add":      {addData();break; }
                case "btn_clear":    
                    {

                        LiveCharts1.Series.Clear();  //只清空数据,不删除 Series
                        InitializeLiveCharts1();     //重复新初始化初始化
                        break;
                    }
                default: break;
            }
        }

        private void addData()
        {
             double n = new Random().Next(0, 30);
            //通过Dispatcher在工作线程中更新窗体的UI元素
            beanData.SeriesCollection[0].Values.Add(n);    //更新纵坐标数据
            beanData.SeriesCollection[0].Values.RemoveAt(0);
        }
    }

}
相关推荐
益莱储中国1 小时前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
benchmark_cc2 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu2 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog3 小时前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
CoderYanger3 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
估值探索者3 小时前
【Python量化选股流水线 #04】选股器好不好用?「昨日候选→今日表现」回看验收
开发语言·python·股票数据·股票数据api接口
爱喝热水的呀哈喽4 小时前
HEJIAN RESEARCH
开发语言·matlab
白露与泡影4 小时前
后端 Java 面试核心八股汇总|高频面试题 + 解析,覆盖基础到进阶
java·开发语言·面试
xifangge20254 小时前
基于 JavaScript 实现 CNC 数控切削参数与螺纹公差纯前端核算引擎
开发语言·前端·javascript