使用INotifyPropertyChanged接口绑定Winform图表

莫迪

我正在尝试实现一个Winform应用程序,该应用程序在折线图上显示一组示例(从HW设备形式)。

我使用了INotifyPropertyChanged接口并将图表绑定到硬件设备的模型,但是当在硬件模型上更改样本时,似乎图表没有得到更新。

抱歉,如果这太基础了(我更多是嵌入式人员),但是似乎我缺少将INotifyPropertyChanged事件连接到数据绑定程序的部分。

这里缺少什么吗?还是应该以其他方式实施?

在WinForm类中,我编写了以下代码,以将图表绑定到HW模型的示例。当“ ADCSamples”更改时,按钮应演示大小写:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        StreamChart.Series[0].Points.DataBindY(GSWatch.ADCSamples);
    }

    private GSWatchModel GSWatch = new GSWatchModel();

    private void button1_Click(object sender, EventArgs e)
    {
        uint[] muki = new uint[128];
        for (int i = 0; i < 128; i++)
        {
            muki[i] = (uint)(i / 10);
        }

        GSWatch.ADCSamples = muki;
        //StreamChart.Series[0].Points.DataBindY(GSWatch.ADCSamples);   //The chart is only updated if this line is executed
    }

    private void button2_Click(object sender, EventArgs e)
    {
        GSWatch.StartStreamADC();
        //StreamChart.Series[0].Points.DataBindY(GSWatch.ADCSamples);   //The chart is only updated if this line is executed
    }
}

在硬件模型中,我编写了以下代码来实现INotifyPropertyChanged功能:

    public class GSWatchModel : INotifyPropertyChanged
    {
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    private uint[] aDCSamples = new uint[128];

    public uint[] ADCSamples
    {
        get
        {
            return aDCSamples;
        }

        set
        {
            aDCSamples = value;
            NotifyPropertyChanged();
        }
    }

    public GSWatchModel()
    {
        CommLink = new GSCommManager();
        for (int i = 0; i < 128; i++)
        {
            aDCSamples[i] = (uint)(i);      //initial values for demo
        }
    }

    uint muki = 0;
    public void StartStreamADC()
    {
        GSPacket StreamRequestPacket = new GSPacket(GSPTypes.Stream);
        CommLink.SendViaGSWatchLink(StreamRequestPacket);

        for (int i = 0; i < 128; i++)
        {
            aDCSamples[i] = (uint)i / 10;   //steps for demonstration
        }
        NotifyPropertyChanged();
        muki += 100;
    }
}
jsanalytics

StartStreamADC在绑定之前移动...参见下文:

    private void Form1_Load(object sender, EventArgs e)
    {
        GSWatchModel GSWatch = new GSWatchModel();
        GSWatch.StartStreamADC();

        StreamChart.Series[0].Points.DataBindY(GSWatch.ADCSamples);
    }

结果:

在此处输入图片说明

为了得到通知,请执行以下操作:

    private void Form1_Load(object sender, EventArgs e)
    {
        GSWatch = new GSWatchModel();
        GSWatch.StartStreamADC();

        StreamChart.Series[0].Points.DataBindY(GSWatch.ADCSamples);

        GSWatch.PropertyChanged += GSWatch_PropertyChanged;

    }

    private void GSWatch_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        StreamChart.Series[0].Points.DataBindY(GSWatch.ADCSamples);
    }

另外,请更改ADCSamples为此:

        public List<uint> ADCSamples = new List<uint>();

它将为您节省很多头痛。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 INotifyPropertyChanged 的 WPF Xaml 绑定类实例

来自分类Dev

使用INotifyPropertyChanged在WPF中绑定系统相关信息

来自分类Dev

使用INotifyPropertyChanged从BitmapImage变量绑定Image.Source

来自分类Dev

使用Angular在本地绑定DataViz图表

来自分类Dev

嵌入式Winform图表可以绑定到WPF中的可观察集合吗?

来自分类Dev

使用INotifyPropertyChanged

来自分类Dev

使用INotifyPropertyChanged

来自分类Dev

使用Web API的模型绑定接口属性

来自分类Dev

使用C的Linux中的接口绑定(聚合)

来自分类Dev

使用文本框对Winform图形进行数据绑定

来自分类Dev

WPF文本框未使用数据绑定,iNotifyPropertyChanged和PropertyChanged触发器更新

来自分类Dev

当我绑定到IEnumerable时,WPF如何知道使用INotifyPropertyChanged?

来自分类Dev

Winform图表标签位置错误

来自分类Dev

绑定到Xceed图表

来自分类Dev

绑定到Xceed图表

来自分类Dev

使用REST API将端口绑定到主机接口

来自分类Dev

使用python绑定/连接到网络接口卡

来自分类Dev

在GWT中使用UiBinder将Ui绑定到Java接口

来自分类Dev

使用Symfony的服务容器将接口绑定到具体类

来自分类Dev

使用Fastify和Fastify-HTTP-Proxy绑定接口

来自分类Dev

使用接口在Java中运行时绑定

来自分类Dev

如何使用LightInject将接口绑定到方法

来自分类Dev

解除绑定 USB 接口以使用 Chrome Web USB API

来自分类Dev

对INotifyPropertyChanged使用代码段

来自分类Dev

对INotifyPropertyChanged使用代码段

来自分类Dev

如何实现 INotifyPropertyChanged 以更新 Xamarin 绑定?

来自分类Dev

C# 绑定 DataContext 和 INotifyPropertyChanged

来自分类Dev

数据绑定 INotifyPropertyChanged 未按预期工作

来自分类Dev

虚拟网络接口绑定

Related 相关文章

热门标签

归档