如何用WPF实现一个最简单的Mvvm示例

2025-10-18 23:00:46

1、创建一个 ViewModelBase

public abstract class ViewModelBase : INotifyPropertyChanged{

    //属性改变事件

    public event PropertyChangedEventHandler PropertyChanged;

   

    //当属性改变的时候,调用该方法来发起一个消息,通知View中绑定了propertyName的元素做出调整

    public void RaisePropertyChanged(string propertyName)

    {

        PropertyChangedEventHandler handler = PropertyChanged;

        if (handler != null)

        {

            handler(this, new PropertyChangedEventArgs(propertyName));

        }

    }

}

2、创建一个DelegateCommand

public class DelegateCommand : ICommand{

    readonly Action<object> _execute;

    readonly Predicate<object> _canExecute;

  

    public DelegateCommand(Action<object> execute)

        : this(execute, null)

    {

    }

    public DelegateCommand(Action<object> execute, Predicate<object> canExecute)

    {

        if (execute == null)

            throw new ArgumentNullException("execute");

        _execute = execute;

        _canExecute = canExecute;

    }

    public void Execute(object parameter)

    {

        _execute(parameter);

    }

    public bool CanExecute(object parameter)

    {

        return _canExecute == null ? true : _canExecute(parameter);

    }

    public event EventHandler CanExecuteChanged

    {

        add { CommandManager.RequerySuggested += value; }

        remove { CommandManager.RequerySuggested -= value; }

    }

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢