首页 > 其他分享 >Caliburn.Micro学习之Action Conventions

Caliburn.Micro学习之Action Conventions

时间:2024-08-24 17:14:47浏览次数:8  
标签:xaml 绑定 Micro Action Caliburn public cs

最近在学习Caliburn.Micro这个框架,应用于WPF项目。相较于prism,caliburn.micro对于事件的绑定就完全不一样,它有好几种模式,借鉴于caliburn.micro的官方simple可以研究说明一下
链接:https://github.com/Caliburn-Micro/Caliburn.Micro
文档:Caliburn.Miro\Caliburn.Micro-master\samples\features,在ActionsView.xaml中用Button的Click事件依次举例。
1.直接用X:Name绑定
Xaml: <Button x:Name="SimpleSayHello" Content="Simple Say Hello" Style="{StaticResource ActionButtonStyle}"/>
cs: public void SimpleSayHello() => Output = "Hello from Caliburn.Micro";
这种是同步方法的绑定,还有异步方法的绑定,异步绑定时UI的名称可以省略Async
Xaml: <Button x:Name="SimpleShowHello" Content="Simple Say Hello" Style="{StaticResource ActionButtonStyle}"/>
cs:
public Task SimpleShowHelloAsync() { Output = "Hello from Caliburn.Micro"; return TaskHelper.FromResult(true); }
2.用CM的Message.Attach属性进行绑定
2.1 直接绑定方法名称SimpleSayHello
xaml:
<Page xmlns:cm="http://caliburnmicro.com"> <Button cm:Message.Attach="SimpleSayHello" Content="Simple Say Hello " Style="{StaticResource ActionButtonStyle}"/> </Page>
cs: public void SimpleSayHello() => Output = "Hello from Caliburn.Micro";
2.2 用固定格式cal:Message.Attach="[Event Action] = [Action 函数名称]" 或cal:Message.Attach="[Event Action] = [函数名称]"
xaml:
<Button cm:Message.Attach="[Event Click]=[Action Clear]" Content="Clear" Style="{StaticResource ActionButtonStyle}"/> <Button cm:Message.Attach="[Event Click]=[Clear]" Content="Clear" Style="{StaticResource ActionButtonStyle}"/>
cs: public void Clear() => Output = String.Empty;
如果是绑定的方法带参数,则如下
xaml:
<TextBox x:Name="Name" Margin="0,10,0,0" HorizontalAlignment="Stretch"/> <Button cm:Message.Attach="[Event Click]=[Action SayHello(Name)]" Content="Say Hello " Style="{StaticResource ActionButtonStyle}"/>
cs: public void SayHello(string name) => Output = $"Hello {name}";
也可以同时绑定多个方法,用;分开
xaml:
<Button cm:Message.Attach="[Event MouseDoubleClick] = [WithDoubleClick];[Event Click] = [SimpleSayHello]" Content="Actions" Style="{StaticResource ActionButtonStyle}"/>
cs: public void WithDoubleClick() {} public void SimpleSayHello() {}
如果是用这种方式进行异步方法的绑定,就不能省略方法名称
xaml: <Button cm:Message.Attach="[Event MouseDoubleClick] = [WithDoubleClick];[Event Click] = [SimpleShowHelloAsync]" Content="Actions with Async" Style="{StaticResource ActionButtonStyle}"/>
cs: public void WithDoubleClick() {} public Task SimpleShowHelloAsync() { Output = "Hello from Caliburn.Micro"; return TaskHelper.FromResult(true); }
异步方法传参数
xaml: <TextBox x:Name="Name" Margin="0,10,0,0" HorizontalAlignment="Stretch"/> <Button cm:Message.Attach="SayGoodbyeAsync(Name)" Content="Say Goodbye " Style="{StaticResource ActionButtonStyle}"/>
cs: public Task SayGoodbyeAsync(string name) { Output = $"Goodbye {name}"; return TaskHelper.FromResult(true); }

2.3用Interaction.Triggers实现绑定,引入 xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xaml:

点击查看代码
 <Button x:Name="FullSyntax" Content="Simple Say Hello" Style="{StaticResource ActionButtonStyle}">
         <i:Interaction.Triggers>
             <i:EventTrigger EventName="Click">
                 <cm:ActionMessage MethodName="SimpleSayHello" />
             </i:EventTrigger>
             <i:EventTrigger EventName="MouseDoubleClick">
                 <cm:ActionMessage MethodName="WithDoubleClick" />
             </i:EventTrigger>
         </i:Interaction.Triggers>
     </Button>

标签:xaml,绑定,Micro,Action,Caliburn,public,cs
From: https://www.cnblogs.com/JaneBlogWH/p/18377968

相关文章

  • Prometheus Micrometer jvm告警模版
    基础说明prometheus界面刚开始看起来非常让人疑惑,实际上它的语法非常强大;prometheus既可以读取即使数据(Table),也可以展示趋势图(Graph);Uselocaltime:选择是否已当前时间展示趋势图查询结构筛选内置命令{筛选条件1,筛选条件2}时间周期内总和(increase(内置命令[5m]))固定......
  • 043、Vue3+TypeScript基础,pinia库使用action,在函数中对存储数据进行修改
    01、main.js代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'//第一步:引入piniaimport{createPinia}from'pinia'constapp=createApp(App);//第二步:创建pinia实例constpinia=......
  • ESP-WROOM32编译带LVGL的MicroPython | lv_micropython for ESP32
    ESP-WROOM32编译带LVGL的MicroPython|lv_micropythonforESP32有关LVGL和MicroPython的详细信息,请访问以下链接:lv_micropythonGitHub仓库ESP32端口目录说明lv_micropython已经包含了这些驱动程序:lv_micropython最大支持到v4.4版本,因此需要下载esp-idfv4.4......
  • C# Task与Action和Func
    在C#中,Task是用于表示异步操作的类型。Action和Func<>是用于定义无返回值的方法和有返回值的方法委托。1.使用Action委托Action委托是无返回值的,你可以使用它来异步执行一个方法。Actionaction=()=>MethodWithNoReturnValue();Task.Run(action);2.使用Func<>委托Func......
  • Acrobat DC安装报错1603,Microsoft Visual C++2013(x64)失败
    之前顺利安装过AcrobatDC,但可能因为自动更新了,导致让我重新登录才能使用,无法再次破解。于是我卸载后重新安装,发现提示MicrosoftVisualC++2013(x64)运行安装失败。我也在网上找了教程,在Adobe官网上下载了MicrosoftVisualC++2013(x64)进行自安装,安装后也可以在设置——应......
  • C#的Action和Func委托
    Action委托:1.声明和使用不带参数的 Action 委托:ActionmyAction=()=>Console.WriteLine("HelloWorld!");myAction();2.声明和使用带有一个参数的 Action 委托:Action<string>myAction=(message)=>Console.WriteLine(message);myAction("HelloWorld!"......
  • ECON10004: INTRODUCTORY MICROECONOMICS
    ECON10004:INTRODUCTORYMICROECONOMICSASSIGNMENT1:SEMESTER2,2024Due:Wednesday,August21,6pm•AssignmentsmustbesubmittedviatheLMSsubjectwebpage.•Remembertokeepacopyofyourassignment.•Thisassignmentwillaccountfor15%ofyour......
  • 【OCPP】ocpp1.6协议第5.11章节Remote Start Transaction的介绍及翻译
    目录5.11RemoteStartTransaction-概述1.目的2.消息类型2.1RemoteStartTransaction.req2.2RemoteStartTransaction.conf3.流程描述4.状态和值域5.特殊情况5.11远程启动交易RemoteStartTransaction-原文译文5.11RemoteStartTransaction-概述在OCPP......
  • Android usb广播 ACTION_USB_DEVICE_ATTACHED流程源码分析
    整体流程图大概意思就是UsbHostManager启动监控线程,monitorUsbHostBus会调用usb_host_run函数(使用inotify来监听USB设备的插拔)不停的读取bus总线,读取到以后,当1、设备插入:发送广播ACTION_USB_DEVICE_ATTACHED2、设备拔出:发送广播ACTION_USB_DEVICE_DETACHED本篇只分析插入......
  • Spring事务(Transaction)
    1Spring事务简洁概况事务(Transaction)是基于关系型数据库(RDBMS)的企业应用的重要组成部分。在软件开发领域,事务扮演者十分重要的角色,用来确保应用程序数据的完整性和一致性。事务具有4个特性:原子性、一致性、隔离性和持久性,简称为ACID特性。原子性(Atomicity):一个事务是一......