WPF的MVVM模式 - 再次使用2d图

时间:2011-02-20 09:16:18

标签: wpf data-binding mvvm graph charts

我需要使用WPF中的 MVVM模式,以最简单的方式(我认为 - 它是折线或线)实现2D图形。

public class Segment
    {
        public Queue<Point> Dots { get; set; }

    }

    public class ViewModel:INotifyPropertyChanged
    {
        private Queue<Segment> _segments;
        public Queue<Segment> Segments
        {
            get { return _segments; }
            set
            {
                _segments = value;
                OnPropertyChanged("Segments");
            }
        }


        public ViewModel(Queue<Point> segments)
        {

        }


        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;

            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }

视图

MainWindow mainView = new MainWindow();
  Queue<Point> q = Class1.GenerateData(); //Class1.GenerateData() returns Queue<Point>  
  mainView.DataContext = new ViewModel(q);

但我不明白

1)如何将<Line X1="{Binding ??}" Y1="{Binding ??}" X2="{Binding ??}" Y2="{Binding ??}" Stroke="Red"/>绑定到Queue < Point >

2)< Line .../>如何每秒刷新一次?或者ViewModel如何每秒刷新一次并通知View有关它?

1 个答案:

答案 0 :(得分:0)

在我看来,最简单的方法是使用WPF Toolkit的System.Windows.Controls.DataVisualization.Toolkit.dll生成一个非常简单的折线图。我已经创建了一个示例应用程序,您可以从这里下载here。它使用MVVM模式但是我使用了ObservableCollection而不是Queue。使用ObservableCollection将确保一旦您的后端集合发生更改,视图中的图表将相应更新。

如果您有任何具体要求,请告诉我。