2017-04-14 6 views
-1

私はC#、WPF、MVVMと私の絶対初心者で、観測可能なcolletionのポイントxとyに基づいてポイントを追加することができました座標。私は、カスタマーのユーザーコントロールを作成し、これが私の見解モデルです: 私は私の意見に私のviewmodel上のデータをバインドする方法を結合するのを理解していません。すなわち。ObservableCollectionのキャンバスにcircle(points)を追加して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

、それはキャンバスない円/ポイント上の場所を表示している(ここでそれを確認するために何のVisual Studioを持っていません)。私はそれがどのように動作するか –

+0

この回答内容を正確に私のview.xamlにいくつかの変更を追加しました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に必ずそれは部分的に今取り組んでいる

関連する問題