Silverlight this.Teams=新的可观察集合<;TeamViewModel>;(u)小组;

Silverlight this.Teams=新的可观察集合<;TeamViewModel>;(u)小组;,silverlight,mvvm,mvvm-light,Silverlight,Mvvm,Mvvm Light,我是mvvm新手,似乎无法找到以下问题的答案: 我有一个Silverlight中的datagrid,它绑定到viewmodel的observablecollection团队: 首先,我在一个列表中获取几个团队对象,然后将它们提供给我的observablecollection (公众观察收集小组) 现在,我想在Datagrid中添加一行,因此我在视图中创建了一个按钮,并连接了一个Icommand,它或多或少地向我的集合中添加了一个空团队: private void Add() {

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

我有一个Silverlight中的datagrid,它绑定到viewmodel的observablecollection团队: 首先,我在一个列表中获取几个团队对象,然后将它们提供给我的observablecollection (公众观察收集小组)

现在,我想在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

提前感谢,


Michael

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


最简单的方法是在add函数的末尾手动提升Team属性的property Changed。

如果您将Team属性(类型为ObservableCollection)数据绑定,则网格应该自动更新

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


简言之,它应该已经起作用了。如果没有,您需要发布更多代码。

我猜它没有显示在网格中,因为我为teamid/name添加了空字符串。当我这样做时,该行在网格中可见:_team.recid=1_team.teamid=“测试”_team.ruleset=“测试”_team.name=“测试”_team.rowstate=GlobalVariables.rowstate.added;感谢克劳斯/布兰多夫的评论!
你好,迈克

谢谢你的回复!它还不起作用,手动提升也不起作用,所以我怀疑我没有正确绑定。下面是xaml(在usercontrol中)中的一些代码:DataContext=“{Binding Main,Mode=OneWay,Source={StaticResource Locator}}它可能与您的usercontrol或您正在使用的DataGrid相关。此外,如果您使用的是Silverlight 4,您可以使用默认的DataGrid()。我猜它没有显示在网格中,因为我为teamid/name添加了空字符串。当我这样做时,该行在网格中可见:_team.recid=1;_team.teamid=“test”;_team.ruleset=“test”;_team.name=“test”"; _team.rowstate=GlobalVariables.rowstate.added;感谢克劳斯/布兰多夫的评论!您好,Mikeu通常为您自己发布的问题写一个答案被认为是不好的做法。最好编辑你的帖子,接受/支持帮助你或解决问题的答案。