构建我的第一个some应用程序(Silverlight4 RC),并且有一些我不理解的问题。
有一个WPF背景,我不知道这里发生了什么:
ViewModel有几个属性,其中一个称为SelectedRecord。这是一个get only属性,定义如下:
public Culture SelectedRecord {
get { return culturesView.View.CurrentItem as Culture; } }
正如您所看到的,它获取CollectionViewSource (称为culturesView)的当前值。因此,如果我选择一个区域性,SelectedRecord (直接从CollectionViewSource中获取一个值)就会像预期的那样。(实际上有一个绑定到CollectionViewSource的datagrid控件,因此可以更改所选的项)
好的。现在转到视图。有几个视图可以访问这个ViewModel,特别是有一个视图显示了前面提到的属性SelectedRecord (让我们称之为EditView)的值。为了显示这个命令,有一个按钮(它的EditView属性绑定到ViewModel中的一个ICommand ),它(第一次)按预期工作。
这意味着:
第一次尝试:我选择一条记录,切换到EditView,结果:显示选定的记录值(正如预期的那样!!)。
第二次尝试:切换回datagrid,选择另一条记录,切换到EditView,结果:再次显示上一条显示的记录的值!为什么??
首先,我以为SelectedRecord没有设置正确的值,但我错了:它有正确的值!所以它应该被显示出来!?
我遗漏了什么?在WPF中,这是可行的!
提前感谢
发布于 2010-03-20 21:51:04
当View值更改时,具有SelectedRecord的ViewModel必须调用RaisePropertyChanged("SelectedRecord"),以便将更改通知给绑定到它的任何视图。
https://stackoverflow.com/questions/2484789
复制相似问题