WPF Caliburn 学习笔记(二)Command
前言:
我们知道WPF也有Command,比如自带的复制、粘贴、剪切、撤销等。这里要说的是Caliburn中的Command,
它们有什么区别和不同点呢?
1、命令源
我们首先创建一个ShowMessageCommand.cs类,和ShowTitleMessageCommand.cs类。
分别写上相应的命令方法。
[Command] public class ShowMessageCommand { [Preview("CanExecute")] public void Execute(string message) { MessageBox.Show(message); } public bool CanExecute(string message) { return !string.IsNullOrWhiteSpace(message); } }
这里的[Command] 不加也能执行,但命令方法名必须是Execute。如果是其他方法名,则报错。
ShowTitleMessageCommand.cs代码
代码
2、容器
我们在App.xaml.cs中的代码不能和上次一样了。这里需要创建一个容器,并且把命令注入容器。
var container = new SimpleContainer(); CaliburnFramework.ConfigureCore(container).WithPresentationFramework().Start(); container.RegisterSingleton<ShowMessageCommand>("ShowMessage");
这里的ShowMessageCommand是一个类文件,就是刚才的命令源。
我们把命令源注入了容器,并且"ShowMessage"命令的名称。
xaml页面:
<Button Content="Click Show Message" cal:Message.Attach="ContainerCommand ShowMessage(message.Text)"/>
也可以更详细的写这个命令。
代码
3、资源
刚才的命令是通过注入容器来实现的,还有一种方法是通过资源命令(ResourceCommand)
我们这里用Window.Resource来引用它。
<Window.Resources>
<local:ShowTitleMessageCommand x:Key="showCommand"/>
</Window.Resources>
然后 Button部分:
<Button Content="Click Show Title Message" cal:Message.Attach="ResourceCommand showCommand(title.Text,message.Text)"/>
这里的showCommand就是资源中的key。
华丽的分隔线——————————————————————————————————————————
代码
未解决:
在Caliburn上其实还有一种BoundCommand。
作者:dingli
出处:http://www.cnblogs.com/dingli/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。