dz网站开发,wordpress微信风格主题,vue做的项目网站,yandx引擎入口当客户端绑定一个数据模型以后#xff0c;数据模型变化以后可以自动通知客户端更新界面显示#xff0c;这就是INotifyPropertyChanged接口要做的工作。INotifyPropertyChanged 接口用于向客户端#xff08;通常是执行绑定的客户端#xff09;发出某一属性值已更改的通知。例…当客户端绑定一个数据模型以后数据模型变化以后可以自动通知客户端更新界面显示这就是INotifyPropertyChanged接口要做的工作。INotifyPropertyChanged 接口用于向客户端通常是执行绑定的客户端发出某一属性值已更改的通知。例如考虑一个带有名为 FirstName 属性的 Person 对象。 若要提供一般性属性更改通知则 Person 类型实现INotifyPropertyChanged 接口并在 FirstName 更改时引发 PropertyChanged 事件。 若要在将客户端与数据源进行绑定时发出更改通知则绑定类型应具有下列功能实现INotifyPropertyChanged接口。 当绑定的属性改变时它可以通知客户端并进行界面数据更新。而我们不用写很多复杂的代码来更新界面数据这样可以做到方法简洁而清晰松耦合和让方法变得更通用。可用的地方太多了例如上传进度实时后台数据变更等地方。 另对于集合ModelINotifyCollectionChanged结接口会有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 set12 {13 _ModelName value; 14 15 if (PropertyChanged ! null)16 {17 PropertyChanged(this, new PropertyChangedEventArgs(ModelName));18 }19 }20 }21 } Silverlight页面 1 Grid x:NameLayoutRoot BackgroundWhite2 TextBlock Height46 HorizontalAlignmentLeft Margin187,51,0,0 NametextBlock1 Text{Binding ModelName} VerticalAlignmentTop Width94 /3 Button Contentupdate Height39 HorizontalAlignmentLeft Margin187,120,0,0 Namebutton1 VerticalAlignmentTop Width106 Clickbutton1_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 PathLineItems} / ViewModel代码 1 public class OrderViewModel : INotifyPropertyChanged 2 { 3 public OrderViewModel( IOrderService orderService ) 4 { 5 this.LineItems new ObservableCollectionOrderLineItem( 6 orderService.GetLineItemList() ); 7 } 8 9 public ObservableCollectionOrderLineItem LineItems { get; private set; }10 } 转载于:https://www.cnblogs.com/Areas/archive/2011/09/07/2169875.html