2011-07-23 44 views
0

我是新來的MVVM和我似乎無法找到答案以下幾點:this.Teams = new ObservableCollection <TeamViewModel>(_ teams);

我在Silverlight數據網格結合到一個視圖模型的的ObservableCollection團隊: 首先,我取了幾個團隊對象在列表中,然後我將它們提供給我的可觀察集合 (Public ObservableCollection Teams)

現在我想在Datagrid中添加一行,我的收藏空隊:

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事件。

最簡單的方法是在添加函數結束時爲團隊屬性手動RaisePropertyChanged。

0

如果你綁定了你的Teams屬性(ObservableCollection類型),你的Grid應該會自動更新。

添加或刪除ObservableCollection中的項目時,沒有理由調用RaisePropertyChanged(「團隊」)。

因此總之,它應該已經工作。如果沒有,你需要發佈更多的代碼。

+0

感謝您的回覆! 它不起作用,手動升起也不這樣做,所以我懷疑我沒有正確地綁定。 這裏是xaml的一些代碼(在usercontrol中): DataContext =「{Binding Main,Mode = OneWay,Source = {StaticResource Locator}}

+0

它可能與您的UserControl或您正在使用的DataGrid有關。 '使用Silverlight 4,你可以使用默認的DataGrid(http://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid(v=vs.95).aspx)。 –

+0

I猜猜它沒有出現在網格中,因爲我爲teamid/name添加了空字符串。 當我這樣做時像這樣,該行在網格中可見: _team.recid = 1; _team.teamid =「test」; _team.ruleset =「test」; _team.name =「test」; _team.rowstate = GlobalVariables.Rowstate.added; 感謝Claus/Brandorf的評論! Regards, Mike –

0

我想它沒有出現在網格中,因爲我爲teamid/name添加了空字符串。當我這樣做時,該行在網格中可見:_team.recid = 1; _team.teamid =「test」; _team.ruleset =「test」; _team.name =「test」; _team.rowstate = GlobalVariables.Rowstate.added;謝謝克勞斯/布蘭多夫的評論! 問候,邁克

+0

Usualy爲自己發佈的問題寫了一個答案被認爲是不好的做法。更好地編輯您的帖子並接受/投票解答幫助您解決問題的答案。 – AxelEckenberger

相關問題