我将一个对象(名为Client)和ObservableCollection(名为Contacts)属性绑定到我的Silverlight视图 . My Client类在is上有一些字符串属性,而ObservalbeCollection在Contacts上有 . 我的viewmodel上有一个名为Client(实现INotifyPropertyChanged)的属性,它包含Client对象 . 如果我将视图中的ListBox绑定到对象上的ObervableCollection,如下所示:
ItemsSource =“{Binding Path = Client.Contacts,Mode = TwoWay}”
并将一个联系人项目添加到集合中,视图正确更新,并显示我新添加的联系人 . 一切都很好 .
如果我在我的ViewModel上创建一个Contacts属性,就像这个public ObservableCollection Contacts {get {return Client.Contacts;并将ListBox绑定到
ItemsSource =“{Binding Path = Contacts,Mode = TwoWay}”
视图永远不会更新 .
我将Contact项添加到客户端,如下所示:
Client.Contacts.Add(newContact)
为什么联系人ListBox没有更新?我怎么能这样改变呢? Client.Contacts绑定是否可以使用?在添加新的Contact之后在代码中添加一个中断,表明新的Contact对象被添加到集合中,但视图没有看到添加 .
1 回答
当执行到达ItemsSource =“{Binding Path = Contacts,Mode = TwoWay}”时,看起来好像没有执行绑定 . 你能否验证是否在ViewModel的构造函数中实例化集合,因为我觉得在绑定时没有设置Contacts实例(null)