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)"/>
这里ContainerCommand 是通过注入容器的命令。ShowMessage不用说了吧。微笑

image

也可以更详细的写这个命令。

代码

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。
image

华丽的分隔线——————————————————————————————————————————

代码

未解决:

在Caliburn上其实还有一种BoundCommand。

posted @ 2011-03-10 08:23  Lee's Blog  阅读(2567)  评论(0编辑  收藏  举报