MVVM Light-模型对象上的事件

我有问题如何在模型对象实例的viemodel中引发事件?


如果我直接在viemodel中声明变量,这很容易。只是 :


private bool _something;

        public bool something

        {

            get

            {

                return _something;

            }

            set

            {

                _something = value;

                //do something

                RaisePropertyChanged("something");

            }

        } 

但是如果我在viemodel中有:


private MyModelClass _projekcik;

        public MyModelClass Projekcik

        {

            get

            {

                return _projekcik;

            }

            set

            {

                _projekcik = value;

                RaisePropertyChanged("Projekcik");

            }

        }

其中MyModelClass在单独的文件中定义为:


 public class MyModelClass

    {

       int abc {get;set;}

       int other {get;set;}

    }

当我更改Projekcik.abc的值时,我想引发一个事件(执行viemodel的代码的一部分)?


例如Projekcik.abc和Projekcik.other是存储来自两个组合框的selectedvalues的变量。当用户更改第一个梳状盒中的选定对象时(当Projekcik.abc更改时),我想引发事件以刷新/重新加载第二个梳状盒的项目


德玛西亚99
浏览 174回答 1
1回答

狐的传说

最好的办法是实行INotifyPropertyChanged的MyModelClass,然后订阅PropertyChanged事件做你的逻辑。例如:private MyModelClass _Projekcik;public MyModelClass Projekcik{    get => _Projekcik;    set    {        if(Equals(value, _Projekcik)) return;        if(_Projekcik != null)            _Projekcik.PropertyChanged -= HandlePropertyChanged;        _Projekcik = value;        if(_Projekcik != null)            _Projekcik.PropertyChanged += HandlePropertyChanged;        void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)        {            if (e.PropertyName == "abc")            {                //Do your stuff here            }        }    }}我认为您知道如何正确实施INotifyPropertyChanged。
打开App,查看更多内容
随时随地看视频慕课网APP