我需要获取一些同时使用 CommandPattern 和 WPF 的代码。说。我正在使用 MVVM 模式编码。我需要使用一些 cammand 模式。
像“MenuItem Header="New" HorizontalAlignment="Left" Width="130" Command="{Binding Add}""
我的命令是使用 CommandPattern 实现的
我需要获取一些同时使用 CommandPattern 和 WPF 的代码。说。我正在使用 MVVM 模式编码。我需要使用一些 cammand 模式。
像“MenuItem Header="New" HorizontalAlignment="Left" Width="130" Command="{Binding Add}""
我的命令是使用 CommandPattern 实现的
命令模式的实现看起来像这样......
<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 实现。用你的话说,实现命令的视图模型是“接收者”,包含菜单的视图是“调用者”。已经引入了命令模式的最新实现,例如“复合命令”和“附加行为”,但这些超出了您的问题范围。