2011-07-23 4 views
0

私はMVVMする新たなんだと私は次のように答えを見つけるように見えることはできません。this.Teams =新しいObservableCollection <TeamViewModel>(_チーム);

私はのviewmodelののObservableCollectionのチームに結合するSilverlightのデータグリッドがあります。 まず、私はチームのカップルを取得(ObservableCollectionの公衆チーム)

これで、データグリッドに行を追加して、ビューにボタンを作成し、I/Oを追加して多かれ少なかれ空のチームをコレクションに追加:

private void Add() 
    { 

        Team _team = new Team(); 

        _team.recid = 1; 
        _team.teamid = ""; 
        _team.ruleset = ""; 
        _team.name = ""; 
        this.Teams.Add(new TeamViewModel(_team)); 
    } 

私はnotifypropertychangedが(私はコレクションを設定するときのみ)、私は私の変更されたviewmodelのビューを通知するために何をしなければならないか?事前に

おかげで、

マイケル

答えて

0

はのObservableCollectionに追加することにPropertyChangedを上げるが、代わりにて、CollectionChangedイベントを発生させていません。

最も簡単な方法は、Add関数の最後にあるTeamプロパティのRaisePropertyChangedを手作業で行うことです。

0

Teamsプロパティ(ObservableCollectionタイプ)をデータバインドすると、グリッドが自動的に更新されます。

ObservableCollectionにアイテムを追加または削除するときに、RaisePropertyChanged( "Teams")を呼び出す理由はありません。

要するに、すでに動作しているはずです。そうでない場合は、さらにコードを投稿する必要があります。

+0

返信ありがとうございます! これはまだ動作しません。手動で持ち上げてもそれを行わないので、正しくバインドしていないと思われます。 xaml(usercontrol内)のコードです: DataContext = "{バインディングメイン、モード= OneWay、ソース= {スタティックリソースロケータ}}

+0

あなたのUserControlまたは使用しているDataGridに関連する可能性があります。 Silverlight 4を使用している場合は、デフォルトのDataGrid(http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid(v=vs.95).aspx)を使用できます。 –

+0

IチームID /名前に空の文字列を追加したのでグリッドに表示されていないことを推測してください。 私がそれをしたらこのように行はグリッド内に表示されます。 _team.recid = 1; _team.teamid = "テスト"; _team.ruleset = "テスト"; _team.name = "テスト"; _team.rowstate = GlobalVariables.Rowstate.added; コメントいただきありがとうございますClaus/Brandorf!あなた自身を掲示質問への答えを書いて よろしく、 マイク –

0

私はteamid/nameに空の文字列を追加したので、グリッドに表示されなかったと思います。このようにすると、行がグリッドに表示されます。_team.recid = 1; _team.teamid = "テスト"; _team.ruleset = "テスト"; _team.name = "テスト"; _team.rowstate = GlobalVariables.Rowstate.added;ありがとうClaus/Brandorfあなたのコメントのために! よろしく、マイク

+0

Usualyは悪い習慣と考えられています。あなたの投稿を編集して、あなたを助けたか、あなたの問題を解決した回答に同意してください。 – AxelEckenberger

関連する問題