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

}
相关推荐
x_x-F6 小时前
网络数据从网卡到用户态:一场基于内存所有权转移的接力赛
开发语言·网络·php
名字还没想好☜6 小时前
Java 线上内存泄漏排查实战:jmap 导堆、MAT 找 GC Roots 与四类常见泄漏
java·开发语言·jvm·内存泄漏
码匠许师傅6 小时前
【C++ 面试真题】聊聊 C++ 的多继承与虚继承
开发语言·c++·面试
我不是疯子是傻子7 小时前
Qt CAN通信周期发送抖动?实测定时器精度校准与时间戳补偿方案
开发语言·数据库·qt
IT爱学堂8 小时前
尚硅谷 - 2025年3月Java+AI大模型应用开发
java·开发语言·人工智能
有点。8 小时前
C++认识数
开发语言·c++
W_326009 小时前
Python文件进阶:一维数据与 CSV 文件读写
开发语言·python
Tyler_TXZ9 小时前
C++C语言之——二叉树
c语言·开发语言·数据结构·c++·二叉树
不会代码的小猴10 小时前
C++新增关键字
开发语言·c++·笔记
yaoxin52112310 小时前
497. Java 反射 - 使用反射读取注解
java·开发语言·python