Silverlight MVVM绑定似乎无法正常工作

时间:2010-03-20 21:11:45

标签: silverlight mvvm binding uiview

构建我的第一个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中,这可以工作!!

提前致谢

1 个答案:

答案 0 :(得分:1)

当CurrentItem值更改时,具有SelectedRecord的ViewModel必须调用RaisePropertyChanged(“SelectedRecord”),因此无论View绑定到哪个View都会收到有关更改的通知。