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

}
相关推荐
点心的游戏开发世界2 小时前
GDScript 入门笔记(十一):Lambda 与匿名函数
开发语言·笔记·游戏引擎·godot
事圆则缓4 小时前
Kotlin 协程完全指南
开发语言·kotlin
我爱写代码i4 小时前
BeLink - 支持生成多种URL 缩短网址PHP源码
开发语言·php·短网址php源码
Java后端的Ai之路4 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
统计学小王子5 小时前
数学建模国赛倒计时4天——《统计模型精讲(混合效应模型R语言实现)》
开发语言·数学建模·r语言
知无不研5 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴5 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
dsyyyyy11016 小时前
JS复习,难点,易错点总结
开发语言·javascript·ecmascript
唐青枫7 小时前
别把日志、权限写进业务方法:C#.NET 动态代理从原理到实战
c#·.net
“AI国潮设计-小江”7 小时前
Python实战 | SDXL精准控制“普宁英歌舞×星空蛋糕”IP落地,附核心Prompt与商用授权思路
开发语言·人工智能·python·prompt·aigc