this.Teams = new ObservableCollection <teamviewmodel>(_ teams); </teamviewmodel>

时间:2011-07-23 12:15:46

标签: silverlight mvvm mvvm-light

我是mvvm的新手,我似乎无法找到以下答案:

我在Silverlight中有一个datagrid,它绑定到viewexodel的observablecollection团队: 首先,我在List中获取几个团队对象,然后将它们提供给我的observablecollection (Public ObservableCollection Teams)

现在我想在Datagrid中添加一行,这样我就在视图中创建了一个按钮,并连接了一个Icommand,它将或多或少的空团队添加到我的集合中:

private void Add()
    {

                    Team _team = new Team();

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

我认为notifypropertychanged不会触发(仅当我设置集合时),我该怎么做才能通知我更改的viewmodel的视图?

提前致谢,

迈克尔

3 个答案:

答案 0 :(得分:0)

添加到ObservableCollection不会引发PropertyChanged,而是引发collectionchanged事件。

最简单的方法是在添加功能结束时为Team属性手动RaisePropertyChanged。

答案 1 :(得分:0)

如果你对你的Teams属性(ObservableCollection类型)进行数据绑定,你的网格应该会自动更新。

在ObservableCollection中添加或删除项目时,没有理由调用RaisePropertyChanged(“团队”)。

简而言之,它应该已经有效了。如果没有,则需要发布更多代码。

答案 2 :(得分:0)

我猜它没有出现在网格中,因为我为teamid / name添加了空字符串。当我这样做时,行在网格中可见:_team.recid = 1; _team.teamid =“test”; _team.ruleset =“test”; _team.name =“test”; _team.rowstate = GlobalVariables.Rowstate.added;感谢Claus / Brandorf的评论! 此致,迈克