【问题标题】:C# dynamic data display - update LineGraphC#动态数据展示——更新折线图
【发布时间】:2014-05-21 14:45:15
【问题描述】:

在我的 XAML 文件中,我创建了一个 ChartPlotter,然后在 c# 中创建我的 LineGraphs 并将它们附加到我的 ChartPlotter。我试图找到一种方法在创建这些 LineGraph 后对其进行更新,但总是失败。

我找到的唯一解决方案是删除所有 LineGraphs ,使用新值重新创建它们,最后将它们链接到我的 ChartPlotter。

如何更新 LineGraph ?

for (int i = 0; i < lgs.Length; i++)
            if (lgs[i] != null)
                lgs[i].RemoveFromPlotter();

PS : lgs 是我的 LineGraph 数组。

【问题讨论】:

    标签: c# wpf linegraph dynamic-data-display


    【解决方案1】:

    要更新您的 LineGraphs,您必须使用 ObservableDataSource 对象而不是 CompositeDataSource。有了这个对象,你可以使用 AppendAsync() 方法。

    public partial class MainWindow : Window
    {
        public ObservableDataSource<Point> source1 = null;
    
        public MainWindow()
        {
            InitializeComponent();
            this.Loaded += MainWindow_Loaded;
        }
    
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            // Create source         
            source1 = new ObservableDataSource<Point>();
            // Set identity mapping of point in collection to point on plot
            source1.SetXYMapping(p => p);
    
            // Add the graph. Colors are not specified and chosen random
            plotter.AddLineGraph(source1, 2, "Data row");
    
            // Force everyting to fit in view
            plotter.Viewport.FitToView();
    
            // Start computation process in second thread
            Thread simThread = new Thread(new ThreadStart(Simulation));
            simThread.IsBackground = true;
            simThread.Start();
        }
    
        private void Simulation()
        {
            int i = 0;
            while (true)
            {
                Point p1 = new Point(i * i, i);
                source1.AppendAsync(Dispatcher, p1);
    
                i++;
                Thread.Sleep(1000);
    
            }
        }
    }
    

    你想要的只是在方法 Simulation 的时候。

    source1.AppendAsync(Dispatcher, p1);
    

    【讨论】:

    • 谢谢,但我遇到了这个错误“调度程序是一种类型,但用作变量”
    • Dispatcher 是来自主窗口的属性。如果你有这个错误,这意味着你没有在主窗口类中编码。如果是这样,请让该调度程序访问您正在处理的类:mainwindow.Dispatcher
    猜你喜欢
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多