none
怎么用一个接口继承INotifyPropertyChanged接口,并在该接口内完善PropertyChangedEventHandler的使用? RRS feed

  • 问题

  • 要为一个抽象类的子类增加数据绑定能力,需要继承INotifyPropertyChanged,该抽象类并没有实现INotifyPropertyChanged接口,也要求不允许为该抽象类实现INotifyPropertyChanged接口,只能在该抽象类的子类上实现,但是继承INotifyPropertyChanged需要填写一些实现代码。我想用一个接口继承INotifyPropertyChanged,然后在子类内去实现继承INotifyPropertyChanged的接口获得数据绑定功能。

        public interface MyINotifyPropertyChanged: INotifyPropertyChanged
        {
            public event PropertyChangedEventHandler PropertyChanged;
            protected void OnChanged(string propertyName = "")
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    
                }
    
    
            }
        }

    继承INotifyPropertyChanged接口的接口MyINotifyPropertyChanged,并实现与数据绑定相关的方法,然后我就想让子类去实现该接口获得数据绑定。

    但是这个接口的代码有语法错误。即是“MyINotifyPropertyChanged.PropertyChanged”只能出现在 += 或 -= 的左边”,这个怎么解决?是在接口下语法不一样么?在接口下的正确代码语法是怎样的?





    • 已编辑 Trian555 2020年6月25日 2:48
    2020年6月25日 2:45

全部回复

  • 你好,

    你为什么要将MyINotifyPropertyChanged定义为接口?如果是接口的话,里边是不应该用具体的方法的。你应该把MyINotifyPropertyChanged定义为class. 然后在代码里可以这样用:

    class ViewModel:NotifyObject 
        {
            private ObservableCollection<User> _users;
            public ObservableCollection<User> Users
            {
                get { return _users; }
                set
                {
                    if (_users != value)
                    {
                        _users = value;
                        RaisePropertyChanged("Users");
                    }
                }
    }

    谢谢

    Daisy  Tian



    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2020年6月30日 3:47