您的位置:首页 > 其它

WPF Caliburn 学习笔记(二)Command

2011-03-10 08:23 316 查看

前言:

我们知道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代码

代码<Button Content="Trigger Click Show Message">
<cal:Message.Triggers>
<cal:RoutedMessageTriggerCollection>
<cal:EventMessageTrigger EventName="Click">
<cal:EventMessageTrigger.Message>
<cal:CommandMessage Command="{cal:Resolve Key=ShowMessage}">
<cal:Parameter Value="{Binding ElementName=message, Path=Text}"/>
</cal:CommandMessage>
</cal:EventMessageTrigger.Message>
</cal:EventMessageTrigger>
</cal:RoutedMessageTriggerCollection>
</cal:Message.Triggers>
</Button>


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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: