我需要使用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有关它?
答案 0 :(得分:0)
在我看来,最简单的方法是使用WPF Toolkit的System.Windows.Controls.DataVisualization.Toolkit.dll生成一个非常简单的折线图。我已经创建了一个示例应用程序,您可以从这里下载here。它使用MVVM模式但是我使用了ObservableCollection而不是Queue。使用ObservableCollection将确保一旦您的后端集合发生更改,视图中的图表将相应更新。
如果您有任何具体要求,请告诉我。