【问题标题】:Silverlight MVVM binding seems not to workSilverlight MVVM 绑定似乎不起作用
【发布时间】:2010-03-20 21:11:45
【问题描述】:

构建我的第一个 SL MVVM 应用程序 (Silverlight4 RC) 并遇到一些我不明白的问题。

有 WPF 背景,我不知道这里发生了什么:

ViewModel 有几个属性,其中一个称为 SelectedRecord。这是一个只能获取的属性,定义如下:

    public Culture SelectedRecord { 
get { return culturesView.View.CurrentItem as Culture;  } }

如您所见,它获取 CollectionViewSource(称为culturesView)的当前值。因此,如果我选择一种文化,则 SelectedRecord(直接从 CollectionViewSource 中获取一个值)按预期进行。 (其实CollectionViewSource绑定了一个datagrid控件,所以可以改变选中项)

好的。现在到视图。有几个视图可以访问这个 ViewModel,特别是有一个显示上述属性 SelectedRecord 的值(我们称之为 EditView)。为了显示这个 EditView,有一个按钮(它的 Command 属性绑定到 ViewModel 中的 ICommand),它(第一次)按预期工作。

这意味着:

第一次尝试:我选择一条记录,切换到 EditView,结果:显示选定的记录值(如预期的那样!!)。

第二次尝试:切换回datagrid,选择另一条记录,切换到EditView,结果:之前显示的记录的值再次显示!!!为什么??

首先我认为 SelectedRecord 没有设置正确的值,但我错了:它具有正确的值!所以应该显示出来!?

我错过了什么?在 WPF 中这会起作用!!

提前致谢

【问题讨论】:

  • 至少有 4 种不同的框架有助于交付 MVVM 模式,您使用的是哪一种?
  • 我没有使用任何预制的。每当出现我没有遇到的要求时,我都会阅读博客以了解操作方法!

标签: silverlight mvvm binding uiview


【解决方案1】:

当 CurrentItem 值更改时,具有 SelectedRecord 的 ViewModel 必须调用 RaisePropertyChanged("SelectedRecord") 以便任何绑定到它的 View 都会收到有关更改的通知。

【讨论】:

  • 你完全正确!在我打开线程之后,我也意识到了这一点!非常感谢!
猜你喜欢
  • 2010-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2012-01-17
  • 1970-01-01
  • 2010-11-02
相关资源
最近更新 更多