构建我的第一个SL MVVM应用程序(Silverlight4 RC)并遇到一些我不明白的问题。
拥有WPF背景我不知道这里发生了什么:
ViewModel有几个属性,其中一个名为SelectedRecord。这是一个get only属性,定义如下:
public Culture SelectedRecord {
get { return culturesView.View.CurrentItem as Culture; } }
正如您所看到的,它获取了CollectionViewSource的当前值(称为culturesView)。因此,如果我选择一个Culture,则SelectedRecord(直接从CollectionViewSource中获取值)按预期方式。 (实际上有一个绑定到CollectionViewSource的数据网格控件,因此可以更改所选项目)
行。现在到视图。有几个视图可以访问这个ViewModel,特别是有一个显示上述属性SelectedRecord的值(让我们称之为EditView)。为了显示这个EditView,有一个按钮(它的Command属性绑定到ViewModel中的ICommand),它按预期运行(第一次)。
这意味着:
第一次尝试:我选择一条记录,切换到EditView,结果:显示所选记录值(按预期!!)。
第二次尝试:切换回datagrid,选择另一条记录,切换到EditView,结果:再次显示之前显示的记录的值! WHY ??
首先我认为SelectedRecord没有设置正确的值,但我错了:它具有正确的值!所以它应该显示出来??
我缺少什么?在WPF中,这可以工作!!
提前致谢
答案 0 :(得分:1)
当CurrentItem值更改时,具有SelectedRecord的ViewModel必须调用RaisePropertyChanged(“SelectedRecord”),因此无论View绑定到哪个View都会收到有关更改的通知。