2017-04-14 30 views
-1

我是一个绝对的新手,C#,查看,WPF和MVVM,我并试图建立一个画布中,我可以添加基于可观察总汇的点x和y点坐标。我创建了custome用户控制,这是我的视图模型: 我不明白的结合如何在我的视图模型的数据绑定到我的看法。进一步来说。加圆(点)从的ObservableCollection帆布使用MVVM

public class ViewModel : INotifyPropertyChanged 

{ 公共事件PropertyChangedEventHandler的PropertyChanged;

public ViewModel() 
{ 
    points = new ObservableCollection<Point>(); 
    this.testData(); 
} 

public ObservableCollection<Point> points { get; set; } 

private void testData() 
{ 
     points.Add(new Point(0, 50)); 
     points.Add(new Point(50, 0)); 
     points.Add(new Point(13, 73)); 
     points.Add(new Point(12, 23)); 
     points.Add(new Point(34, 80)); 
     points.Add(new Point(322, 225)); 
    points.Add(new Point(270, 510)); 
    points.Add(new Point(0, 0)); 
} 
} 

这是我对我的view.xaml

<Canvas> 
<local:UserControl2 /> 
</Canvas> 

和我的用户控制

public partial class UserControl2 : UserControl 
    { 
    public UserControl2() 
    { 
     InitializeComponent(); 
     this. DataContext = new ViewModel(); 
    } 
    } 
+0

这部分现在的工作,它是在画布上没有圆圈/点上显示的位置。我加了一些修改我view.xaml –

+0

这个答案细节究竟它是如何工作http://stackoverflow.com/a/1030191/1228类似的问题http://stackoverflow.com/questions/2317713/binding-wpf-canvas-孩子到一个-的ObservableCollection和http://stackoverflow.com/questions/3135438/binding-to-canvas如果你绑定到一个集合,控制需要显示的东西每样东西的集合中,你需要使用ItemsControl。面板保存所创建的项目,并且您可以使用DataTemplates来控制每个项目的构建方式。这是基本模式。 – Will

回答

0

您可以尝试两件事情:在设定的部分提高notifyproprtychanged事件您观察到的集合(我知道,它的傻,我有这个sollution在类似情况下运气)或(也为我工作)创建一个在您TESTDATA功能的新型,当地的ObservableCollection,有填充值,然后集合Y我们的可观察收集到当地充实的可观察收集。你也可以结合使用这两种方法。请在您的视图中重新检查您的属性绑定。确保其设置为notifyoncodeupdated(或东西),也以notifyontargetupdated(没有Visual Studio来点击此处查看)