【C#】INotifyPropertyChangedを実現する3つの方法

4154 ワード

 class StudentItemViewModel:INotifyPropertyChanged

    {

        public event PropertyChangedEventHandler PropertyChanged;



        public Student Student { get; set; }





        private bool _isSelected;

        public bool IsSelected

        {

            get { return _isSelected; }

            set

            {

                _isSelected = value;

                this.PropertyChanged(this,new PropertyChangedEventArgs("IsSelected"));

                //NotifyPropertyChanged("IsSelected");

            }

        }







        private void NotifyPropertyChanged(string Name)

        {

            if (PropertyChanged != null)

            {

                PropertyChanged(this, new PropertyChangedEventArgs(Name));

            }

        }





    }







    class NotifyCationObject : INotifyPropertyChanged

    {

        private string GetPropertyName<T>(Expression<Func<T>> action)

        {

            var expression = (MemberExpression)action.Body;

            return expression.Member.Name;

        }



        protected void NotifyPropertyChanged<T>(Expression<Func<T>> action)

        {

            string name = GetPropertyName<T>(action);

            NotifyPropertyChanged(name);

        }



        private event PropertyChangedEventHandler PropertyChanged;



        private void NotifyPropertyChanged(string Name)

        {

            if (PropertyChanged != null)

            {

                PropertyChanged(this, new PropertyChangedEventArgs(Name));

            }

        }

    }