为了账号安全,请及时绑定邮箱和手机立即绑定

MVVM Light-模型对象上的事件

MVVM Light-模型对象上的事件

C#
德玛西亚99 2021-03-29 17:10:05
我有问题如何在模型对象实例的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更改时),我想引发事件以刷新/重新加载第二个梳状盒的项目
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

最好的办法是实行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。


查看完整回答
反对 回复 2021-04-10
  • 1 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信