【问题标题】:INotifyPropertyChanged Question in SilverlightSilverlight 中的 INotifyPropertyChanged 问题
【发布时间】:2011-06-10 00:56:31
【问题描述】:

我正在研究 MVVM,我不太熟悉它,我想知道在哪里实现 INotifyPropertyChanged

我在 ViewModel 中实现了它(根据我的理解这是正确的)并且我处于需要修改视图中检索到的数据并且一旦修改数据将其保存在属性,一旦视图中的适当性被分配/更改,我希望 ComboBox 拾取该 itemsource,这将是更改的属性并保存修改后的数据。

那么在这种情况下我该怎么办?我应该在视图中实现INotifyPropertyChanged 并使用:

PropertyChanged += new PropertyChangedEventHandler(PropertyChanged_implimentation); ?

我该怎么办?

【问题讨论】:

    标签: silverlight mvvm view viewmodel inotifypropertychanged


    【解决方案1】:

    通常你会在你的视图模型上实现INotifyPropertyChanged。如果您需要通知任何消费者他们的属性更改(例如视图模型),您也可以选择在您的模型上实现它。

    您通常不会在您的视图上实现INotifyPropertyChanged,因为您将使用 XAML 绑定在您的视图和底层视图模型之间进行通信。

    INPC 需要在视图模型中的属性值更改时通知您的视图进行自我更新。只要视图中的控件值发生更改,绑定引擎就会更新视图模型中的绑定属性值。

    可以在here 找到对 MVVM 的良好介绍,我还强烈建议将MVVM framework 用于任何严肃的应用程序。

    【讨论】:

    • 我们在 'ViewModelBase' 类中实现 INotifyPropertyChanged 和辅助方法 SendPropertyChanged( string propertyName ) 并从中继承所有 ViewModel。节省大量繁琐的重复。
    • 是的,这很有用。如果您使用诸如 Caliburn.Micro 之类的 MVVM 框架,它会提供一个实现了 INPC 的视图模型基类。还有一个用于调用 PropertyChanged 事件的辅助方法,该方法采用 lambda 表达式,因此您的代码库不需要乱扔魔术字符串。
    猜你喜欢
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多