c# - WPF 中的命令,实现问题

标签 c# wpf constructor icommand

我知道我已经就此提出过问题,但有些问题令人困惑。 我正在做一个关于 WPF MVVM 模式的教程,但似乎我无法正确理解,因为在教程中,它没有详细介绍如何实现 ICommand 接口(interface)。 (不确定它到底有多正确?!!)

我有以下 ICommand 实现:

class ViewCommand : ICommand
    {
        #region ICommand Members

        private Predicate<object> _canExecute;
        private Predicate<bool> _execute(object param);

        public ViewCommand(Action<object> action)
        {

        }

        public bool CanExecute(object parameter)
        {
            return _canExecute == null ? true : _canExecute(parameter);
        }

        public void Execute(object parameter)
        {
            _execute(parameter);
        }

        public event EventHandler CanExecuteChanged 
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }

        #endregion
    }

现在使用:

class StartViewModel : ViewModel
    {
        public ViewCommand startViewCommand;

        public ViewCommand StartCommand
        {
            get
            {
                if (startViewCommand == null)
                    startViewCommand = new ViewCommand(
                        param => this.StartApplication()); // StartApplication returns void
                return startViewCommand;
            }
        }

我无法弄清楚 ViewCommand 的构造函数是什么上课应该做什么?在 StartViewModel类它在构造函数中使用 lambda 表达式,因此需要一些委托(delegate),但我不确定它与 Execute 和 CanExecute 一起使用的含义和方式。我放了一个Action<object> ,但这可能是错误的...

最后,有人可以给我指点一个关于如何实现 ICommand 的教程来解释它吗?

谢谢!

最佳答案

看看乔什·史密斯的 tutorial注意中继命令,他在哪里实现它。

关于c# - WPF 中的命令,实现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2218764/

相关文章:

c# - ListBox selectedItem 开始工作但设置在 MVVM 中不起作用

java - 奇怪的复制构造函数

c++ - C++中的自动构造函数生成?

c# - 如何检查 XmlDocument 是否已更改?

c# - 当我在 gridview 中过滤行没有找到记录时如何禁用导出按钮

c# - XSL-FO SVG 格式支持 - .Net

c# - 如何配置 MYSQL ODBC 驱动程序以与 Visual Studio 2013 一起使用?

c# - NullReferenceException,没有堆栈跟踪...从哪里开始?

.net - 在 WPF 中绑定(bind)对象的 List 属性的首选方法是什么?

c++ - 一个最令人头疼的解析错误 : constructor with no arguments