Шаблон MVVM для WPF - снова 2d граф - PullRequest
1 голос
/ 20 февраля 2011

Мне нужно реализовать 2D-график наиболее простым способом (я думаю, это полилиния или линия), используя шаблон MVVM в WPF .

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 голосов
/ 24 февраля 2011

На мой взгляд, самый простой способ - использовать System.Windows.Controls.DataVisualization.Toolkit.dll из WPF Toolkit для создания очень простого линейного графика.Я создал образец приложения, которое вы загружаете здесь здесь .Он использует шаблон MVVM, но вместо очереди я использовал ObservableCollection of Point.Использование ObservableCollection гарантирует, что как только ваша внутренняя коллекция изменится, ваша диаграмма в представлении будет соответствующим образом обновлена.

Дайте мне знать, если у вас есть какие-то особые требования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...