zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Photon3Unity3D.dll 解析三——OperationRequest、OperationResponse
    关于VS2010的一些操作
    Photon3Unity3D.dll 解析二——EventData
    Photon3Unity3D.dll 解析一
    关于U3D中的移动和旋转
    U3D的一些常用基础脚本
    U3D模拟仿真实现
    构建基于TCP的应用层通信模型
    TCP协议的三次握手
    Python生成随机字符串
  • 原文地址:https://www.cnblogs.com/dingli/p/1979323.html
Copyright © 2011-2022 走看看