现在的位置: 首页 > 综合 > 正文

WPF Caliburn 学习笔记(二)Command(2)

2012年11月07日 ⁄ 综合 ⁄ 共 3703字 ⁄ 字号 评论关闭

首先解决上一篇博客未解决的问题。上次博客中还有一种命令(BoundCommad)没讲到。

命令源还是不变的。变得是:我们对命令源封装成属性:

命令源ShowMessageCommand:

代码

新建一个MainModel类,对ShowMessageCommand封装成属性。

 public class MainModel
    {
       private readonly ShowMessageCommand _myCommand = new ShowMessageCommand();

       public ShowMessageCommand MyCommand
       {
           get { return _myCommand; }
       }
    }

xaml:

<Window.DataContext>
    <local:MainModel />
</Window.DataContext>
<StackPanel>
    <TextBox Name="message" Width="200" />
    <Button Content="BoundCommand" 
     cal:Message.Attach="BoundCommand MyCommand(message.Text)"/>
</StackPanel>
这里注意是DataContent。DataContext与Resource的区别是
DataContext一般用于绑定数据,相当于数据源。
Resource一般用于对资源的引用,比如 StaticResource,DynamicResource等。
运行效果:
image

CompositeCommands

Caliburn中的命令还有层次关系。

还是用原来的资源。稍作修改。

App.xaml.cs

代码

这里用到了注入容器来实现命令。

ShowTitleMessageCommand.cs类

 

代码

ShowMessageCommand.cs类

代码

后台数据都准备好了。

xaml

 

代码

这里我们用到AllCommand和AnyCommand。

Caliburn上说 AllCommand需要它的子命令都可用,父命令才能执行,相当于“And”逻辑。

而AnyCommand只要它的子命令有一个正确,就可以执行,相当于“or”逻辑 。
我们也可以定义自己的逻辑,通过ICompositeCommand接口。

运行效果:

image

重点:cal:Command.Parent的用法。

抱歉!评论已关闭.