首页 新闻 会员 周边

c#语法问题,大家进来看看

0
[已解决问题] 解决于 2013-03-24 00:18

INotifyPropertyChanged 这个接口到底是干什么用得。能否给个实例???

彬彬@科比的主页 彬彬@科比 | 初学一级 | 园豆:43
提问于:2013-02-25 00:28
< >
分享
最佳答案
0

 

不一定非要mvvm,

INotifyPropertyChanged 是向客户端发出某一属性值已更改的通知。

INotifyPropertyChanged 接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。

例如,考虑一个带有名为 FirstName 属性的 Person 对象。若要提供一般性属性更改通知,则 Person 类型实现 INotifyPropertyChanged 接口并在 FirstName 更改时引发 PropertyChanged 事件。

看一下微软的文档吧,有例子

http://msdn.microsoft.com/zh-cn/library/system.componentmodel.inotifypropertychanged.aspx

 

我自己做用wpf了一个小例子 你可以下载下来 INotifyPropertyChangedDemo.rar

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid Name="gd_Model">
        <Label Content="{Binding NumberFirst}" Margin="0,0,211,218"></Label>
        <Label Content="{Binding NumberSecond}" Margin="0,99,211,107"></Label>
        <Button Width="80" Height="30" Click="btn_Click" Margin="365,158,58,124"></Button>
    </Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.ComponentModel;

namespace WpfApplication1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        PlusModel model_PlusModel = new PlusModel();
        public MainWindow()
        {
            InitializeComponent();
            model_PlusModel.NumberFirst = 5;
            model_PlusModel.NumberSecond = 5;
            gd_Model.DataContext = model_PlusModel;
        }
        public void btn_Click(object sender, RoutedEventArgs e)
        {
            model_PlusModel.NumberFirst++;
            model_PlusModel.NumberSecond++;
        }
       
    }
    public class PlusModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public PlusModel()
        {

        }
        /// <summary>
        /// 第一个加数
        /// </summary>
        private decimal _numberFirst;
        /// <summary>
        /// 第二个加数
        /// </summary>
        private decimal _numberSecond;
      
        /// <summary>
        /// 第一个加数
        /// </summary>
        public decimal NumberFirst
        {
            get
            {
                return _numberFirst;
            }
            set
            {
                _numberFirst = value;
                if (PropertyChanged != null)
                {                   
                    PropertyChanged(this, new PropertyChangedEventArgs("NumberFirst"));                    
                }
            }
        }
        /// <summary>
        /// 第二个加数
        /// </summary>
        public decimal NumberSecond
        {
            get
            {
                return _numberSecond;
            }
            set
            {
                _numberSecond = value;               
            }
        }
        
    }
}

 

 

 

 

 

 

 

 

奖励园豆:5
li-peng | 小虾三级 |园豆:954 | 2013-02-25 15:48
其他回答(4)
0

就是监控属性值的更改,对属性值发生更改时触发一个INotifyPropertyChanged事件。

RyanCheng | 园豆:474 (菜鸟二级) | 2013-02-25 09:25
0

是mvvm模式的一个“前端属性更改通知后台”的机制

参考:http://www.cnblogs.com/Mainz/archive/2011/05/04/2036784.html

滴答的雨 | 园豆:3660 (老鸟四级) | 2013-02-25 09:48
0

一楼正解

jerry-Tom | 园豆:4077 (老鸟四级) | 2013-02-25 10:23
0

学习来的!!

百品 | 园豆:253 (菜鸟二级) | 2013-03-04 17:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册