none
WPF 的mvvm模式,模型层实现了inotify接口之后,还有必要在vm里写事件处理么?完全可以在模型的set方法里写逻辑吧 RRS feed

  • 问题

  • 如题,模型层以模型触发写逻辑还是以事件触发在vm里写逻辑。需不需要再抽象出一个service层。

    新人求指导,任何的观点都会非常感谢的,已经纠结很久了。

    2016年5月13日 0:57

答案

  • 您好 1024go,

    >>"模型层实现了inotify接口之后,还有必要在vm里写事件处理么?完全可以在模型的set方法里写逻辑吧"

    这要看具体的业务需求了。比如我们要响应复选框的勾选操作,那么我们就可以去监听复选框绑定的模型的某个属性。在这个属性的Set方法中些对应的逻辑就可以了。

    假如我们要在点击Button控件后保存当前表单中的数据,那么我们就需要绑定Button的Command属性,在模型中书写点击Button的事件逻辑。以下代码供你参考。

    首先我们要实现ICommand接口。这是一个最简单的实现,在一些MVVM框架中都有类似的实现。

    public class RelayCommand : ICommand
    {
        
        public RelayCommand(Action todo)
        {
            _commandAction = todo;
        }
    
        private Action _commandAction;
        
        public bool CanExecute(object parameter)
        {
            return true;
        }
    
        public event EventHandler CanExecuteChanged;
    
        public void Execute(object parameter)
        {
            if (_commandAction != null)
            {
                _commandAction();
            }
        }
    }

    然后在模型中写上Button对应的操作。

    //用来绑定Button的Command属性
    public RelayCommand SaveCommand
    {
        get
        {
            return new RelayCommand(() => {
                //在这里写上处理代码
            });
        }
    }
    
    Best Regards,
    Li Wang

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年5月14日 3:18