2017-04-14 13 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來點擊此處查看)