当客户端绑定一个数据模型以后,数据模型变化以后可以自动通知客户端更新界面显示,这就是INotifyPropertyChanged接口要做的工作。INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。例如,考虑一个带有名为 FirstName 属性的 Person 对象。 若要提供一般性属性更改通知,则 Person 类型实现 INotifyPropertyChanged 接口并在 FirstName 更改时引发 PropertyChanged 事件。 若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列功能:实现INotifyPropertyChanged接口。
当绑定的属性改变时,它可以通知客户端,并进行界面数据更新。而我们不用写很多复杂的代码来更新界面数据,这样可以做到方法简洁而清晰,松耦合和让方法变得更通用。可用的地方太多了:例如上传进度,实时后台数据变更等地方。
(另:对于集合Model:INotifyCollectionChanged结接口会有ObservableCollection自动实现(见上一篇))
一个简单的例子:(下面的例子中TextBlock绑定了DataContext的ModelName,点击按钮以后model更新,TextBlock会自动更新)
Model:
1 public class MyModel : INotifyPropertyChanged
2 {
3 public event PropertyChangedEventHandler PropertyChanged;
4
5 public int ModelID { get; set; }
6
7 private string _ModelName;
8 public string ModelName
9 {
10 get { return _ModelName; }
11 set
12 {
13 _ModelName = value;
14
15 if (PropertyChanged != null)
16 {
17 PropertyChanged(this, new PropertyChangedEventArgs("ModelName"));
18 }
19 }
20 }
21 }
Silverlight页面:
1 <Grid x:Name="LayoutRoot" Background="White">
2 <TextBlock Height="46" HorizontalAlignment="Left" Margin="187,51,0,0" Name="textBlock1" Text="{Binding ModelName}" VerticalAlignment="Top" Width="94" />
3 <Button Content="update" Height="39" HorizontalAlignment="Left" Margin="187,120,0,0" Name="button1" VerticalAlignment="Top" Width="106" Click="button1_Click" />
4 </Grid>
页面代码:
1 public MyView()
2 {
3 InitializeComponent();
4
5 MyModel m1 = new MyModel() { ModelID = 1, ModelName = "abc" };
6
7 this.DataContext = m1;
8 }
9
10 private void button1_Click(object sender, RoutedEventArgs e)
11 {
12 (this.DataContext as MyModel).ModelName = "abc_changed";
13 }
甚至还有一个VS2010插件来完成这个工作:NotifyPropertyWeaver
ViewModel也可以实现INotifyPropertyChanged接口,很简单:
XAML绑定集合:
1 <DataGrid ItemsSource="{Binding Path=LineItems}" />
ViewModel代码:
1 public class OrderViewModel : INotifyPropertyChanged
2 {
3 public OrderViewModel( IOrderService orderService )
4 {
5 this.LineItems = new ObservableCollection<OrderLineItem>(
6 orderService.GetLineItemList() );
7 }
8
9 public ObservableCollection<OrderLineItem> LineItems { get; private set; }
10 }
分享到:
相关推荐
3. MVVM 模式:在 SilverLight 中,MVVM(Model-View-ViewModel)模式广泛使用,INotifyPropertyChanged 是实现 ViewModel 与 View 之间数据交互的关键。 4. 优化性能:通过 INotifyPropertyChanged,只在真正需要...
在Silverlight 4.0中,可以使用`INotifyPropertyChanged`接口来实现属性改变的通知,而`ICommand`接口则用于实现命令。 **4. Command(命令)** 在Silverlight 4.0中,`ICommand`接口允许我们创建可执行的操作,...
在Silverlight中,ViewModel通常会实现INotifyPropertyChanged接口,以便在属性更改时通知视图更新。此外,它还可能实现ICommand接口,提供命令功能,使视图能够响应用户的操作。 **4. 数据绑定** 在Silverlight中...
MVVM(Model-View-ViewModel)模式是一种设计模式,尤其在开发富客户端应用程序时非常流行,如Silverlight。这种模式将应用程序分为三个主要组件:模型(Model)、视图(View)和视图模型(ViewModel)。MVVM的核心...
INotifyPropertyChanged接口是.NET框架中一个非常重要的设计模式,它主要用于实现数据绑定的实时更新。在Silverlight中,这个接口的应用尤为关键,因为Silverlight的数据绑定机制依赖于它来感知对象属性的变化并自动...
MVVM(Model-View-ViewModel)是一种软件设计模式,广泛应用于WPF、Silverlight以及Xamarin等UI开发框架中。它将用户界面(View)、业务逻辑(ViewModel)和数据模型(Model)进行分离,以实现更好的代码组织和测试...
在Silverlight应用开发中,MVVM(Model-View-ViewModel)模式是一种常用的设计模式,它将业务逻辑、用户界面和数据模型分离,提高了代码的可测试性和可维护性。本篇将深入探讨在Silverlight中如何在MVVM模式下进行...
在Silverlight应用中,MVVM(Model-View-ViewModel)是一种设计模式,它提倡将业务逻辑、用户界面和数据模型分离,从而实现更清晰的代码结构和更好的可测试性。以下是对MVVM模式在Silverlight中的应用进行的详细说明...
而MVVM(Model-View-ViewModel)模式则是一种流行的设计模式,尤其在WPF和Silverlight等UI框架中广泛应用。本文将深入探讨如何在Silverlight项目中应用MVVM模式,以创建高效、可维护的程序。 **MVVM模式** MVVM...
ViewModel是MVVM的核心,它实现了INotifyPropertyChanged接口,以便在属性改变时通知View进行更新。此外,ViewModel还定义了一些Command,用于触发增删改查操作。这些Command遵循命令设计模式,使得View可以无须关心...
通过分析“silverlight mvvm demo”,我们可以学习到如何在实践中应用MVVM模式,包括如何创建ViewModel、如何进行数据绑定、如何定义和使用命令等。同时,这也有助于我们更好地理解和掌握Silverlight的开发技巧,...
ViewModel通常是普通的C#类,它包含了视图所需的数据属性和命令,这些属性通常使用`INotifyPropertyChanged`接口来实现自动数据绑定更新。 **MVVM在Silverlight中的应用** 在"Silverlight-MVVM简单示例"项目中,...
Silverlight MVVM(Model-View-ViewModel)是一种设计模式,常用于创建用户界面,特别是在WPF(Windows Presentation Foundation)和Silverlight中。MVVM模式强调解耦应用程序的视图(View)、模型(Model)和视图...
本书深入探讨了WPF(Windows Presentation Foundation)和Silverlight框架下的MVVM(Model-View-ViewModel)设计模式的应用,为软件开发者提供了构建高质量、可维护性高和可测试性强的用户界面应用程序的方法。...
MVVM-Samples" 是一个专为开发者设计的压缩包,它包含了多个示例项目,展示了如何在WPF(Windows Presentation Foundation)、Silverlight以及Windows Phone 7平台上应用MVVM(Model-View-ViewModel)设计模式。...
这个框架提供了一系列工具和库,帮助开发者遵循MVVM设计模式,实现更加模块化、可测试且易于维护的代码。 **1. MVVM模式介绍** MVVM模式是一种软件设计模式,它将用户界面(View)与业务逻辑(ViewModel)分离,...
1. **GalaSoft.MvvmLight Library**:这是MvvmLight的核心库,包含了各种帮助类和接口,如 GalaSoft.MvvmLight.ViewModelBase,它是ViewModel的基础类,提供了INotifyPropertyChanged和ICommand的实现。 2. **...
MVVM(Model-View-ViewModel)是一种设计模式,广泛应用于微软的XAML平台,如WPF(Windows Presentation Foundation)、Silverlight以及Windows Phone 7等。该模式旨在提高应用的可测试性,同时促进开发人员与设计...
Silverlight MVVM(Model-View-ViewModel)Sample是一种使用Microsoft Silverlight技术实现的软件设计模式示例,该模式遵循MVVM架构原则。MVVM是软件开发中的一种流行设计模式,尤其在构建用户界面时,它能够帮助...
MVVM(Model-View-ViewModel)是一种设计模式,主要用于构建用户界面,特别是在WPF(Windows Presentation Foundation)和Silverlight应用程序中。它源自于MVC(Model-View-Controller)模式,但针对UI开发进行了...