我是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的视图?
提前致谢,
迈克尔
答案 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的评论! 此致,迈克