0

我需要获取一些同时使用 CommandPattern 和 WPF 的代码。说。我正在使用 MVVM 模式编码。我需要使用一些 cammand 模式。

像“MenuItem Header="New" Horizo​​ntalAlignment="Left" Width="130" Command="{Binding Add}""

我的命令是使用 CommandPattern 实现的

4

1 回答 1

4

命令模式的实现看起来像这样......

        <Menu DockPanel.Dock="Top">
            <MenuItem Header="file" Command="{Binding FileCommand}"/>
        </Menu>

...声明绑定到命令的项目。该命令将存在于视图模型中,声明如下......

    public ICommand FileCommand { get; set; }

...其中 ICommand 被声明为 System.Windows.Input 命名空间中的接口。http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.aspx

要初始化 ICommand...

FileCommand = new RelayCommand(FileCommandExecute, FileCommandCanExecute); 

...其中“RelayCommand”是 Josh Smith 关于 MVVM 的开创性文章中解释的一个类,可在此处找到:http: //msdn.microsoft.com/en-us/magazine/dd419663.aspx 存在其他实现,例如 Prism 的“DelegateCommand” '。构造函数中的两个委托是这样编码的......

    #region FileCommand callbacks
    private bool FileCommandCanExecute(object obj)
    {
        return true;
    }
    private void FileCommandExecute(object obj)
    {
        OpenFile();
    }
    #endregion // end of FileCommand callbacks

...“CanExecute”方法根据视图模型的状态启用或禁用用户界面上的命令。'Execute' 方法执行实际工作。

此示例是命令模式的经典 MVVM 实现。用你的话说,实现命令的视图模型是“接收者”,包含菜单的视图是“调用者”。已经引入了命令模式的最新实现,例如“复合命令”和“附加行为”,但这些超出了您的问题范围。

于 2013-08-21T11:30:50.830 回答