01

事件连接

这会自动将控件上的事件关联到ViewModel上的方法。

常规约定:

<Button x:Name="Save">

这将导致按钮的单击事件调用ViewModel上的“Save”方法。

简短语法:

<Button cal:Message.Attach="Save">

这将再次导致按钮的“Click”事件调用ViewModel上的“Save”方法。

可以像这样使用不同的事件:

<Button cal:Message.Attach="[Event MouseEnter] = [Action Save]">

可以向方法传递不同的参数,如下所示:

<Button cal:Message.Attach="[Event MouseEnter] = [Action Save($this)]">

长语法

<UserControl x:Class="Caliburn.Micro.CheatSheet.ShellView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" xmlns:cal="http://www.caliburnproject.org"> <StackPanel> <TextBox x:Name="Name" /><Button Content="Save"> <i:Interaction.Triggers> <i:EventTrigger EventName="Click"> <cal:ActionMessage MethodName="Save"> <cal:Parameter Value="{Binding ElementName=Name, Path=Text}" /> </cal:ActionMessage> </i:EventTrigger> </i:Interaction.Triggers> </Button> </StackPanel>
</UserControl>

此语法表达式对于Blend 比较友好。

02

数据绑定

这将自动将控件上的依赖项属性绑定到ViewModel上的属性。

常规约定:

<TextBox x:Name="FirstName" />

将导致TextBox的“Text”属性绑定到ViewModel的“FirstName”属性。

明确的写法:

<TextBox Text="{Binding Path=FirstName, Mode=TwoWay}" />

这是绑定属性的正常方式。

03

项目实例

前台XAML文件:

<Window x:Class="WpfApp8.StartView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:cal="http://www.caliburnproject.org" xmlns:local="clr-namespace:WpfApp8"mc:Ignorable="d"Title="StartView" Height="300" Width="600" WindowStartupLocation="CenterScreen"><StackPanel><TextBox Name="TextContent"/><Button x:Name="testBtn" Content="testBtn"   Background="LightCyan"/><ListBox Name="ListBoxItems"  MinHeight="230" Background="LightGray"cal:Message.Attach="[Event SelectionChanged] = [Action ListBoxItems_SelectionChanged($source,$eventArgs)];[Event MouseUp]=[ListBoxItems_MouseUp($source,$eventArgs)]" /></StackPanel>
</Window>

后台viemmodel

using Caliburn.Micro;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;namespace WpfApp8
{class StartViewModel : Screen{ public StartViewModel(){ListBoxItems = new ObservableCollection<string>() { };ListBoxItems.Add("dotNet编程大全");ListBoxItems.Add("Csharp编程大全");ListBoxItems.Add("dotnet工控上位机编程");}public ObservableCollection<string> ListBoxItems { get; set; }public string TextContent { get; set; }public void testBtn(){TextContent = "hello world!";NotifyOfPropertyChange(()=> TextContent);}public void ListBoxItems_MouseUp(object sender, MouseButtonEventArgs e){ListBox listbox = sender as ListBox;MessageBox.Show("当前操作的控件名称是:"+ listbox.Name);}public void ListBoxItems_SelectionChanged(object sender, SelectionChangedEventArgs e){TextContent = (sender as ListBox).SelectedItem.ToString();NotifyOfPropertyChange("TextContent");}}
}

04

运行结果

05

源码下载

百度网盘链接:

链接:https://pan.baidu.com/s/1G8aOfOnZ03dGyVFErUiB6Q

提取码:1314

小编微信:mm1552923

公众号:dotNet编程大全

C# wpf编程CM框架快速入门项目实例相关推荐

  1. Quartz 框架快速入门(二)

    尽可能的用声明式处理软件配置,其次才考虑编程式的方式.在上一篇<Quartz 框架快速入门(一)>中,如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译.这种方 ...

  2. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

  3. java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】

    第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定 ...

  4. 微信小程序wepy框架快速入门

    微信小程序wepy框架快速入门 微信小程序简介 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一 ...

  5. 视频教程-Spring框架快速入门到精通-Java

    Spring框架快速入门到精通 十年项目开发经验,主要从事java相关的开发,熟悉各种mvc开发框架. 王振伟 ¥18.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 ...

  6. python编程基础语法-Python编程基础语法快速入门

    1. 课程咨询加老师助理微信:助理1微信: chenjinglei88 ,助理2微信: omf6757 2. 决定购买并想得到陈敬雷老师亲自指导(课程或自己项目难题均可)加老师微信: chenjing ...

  7. Quartz 框架快速入门(四)

    Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何QuartSpring的代码就可以实现定时任务.Spring通过JobDetailBean,Met ...

  8. Quartz 框架快速入门(三)

    在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Schedul ...

  9. Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)

    Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...

最新文章

  1. 使用yum管理软件包
  2. leetcode算法第8题
  3. ELSE 技术周刊(2017.11.20期)
  4. wp_terms分类信息表—WordPress数据库研究(2.6.2版本)#8
  5. 每个Web开发者都应该知道的SOLID原则
  6. lunbuntu install maven
  7. snort入侵检测系统下载Linux,入侵检测系统Snort 2.9.0.2 发布
  8. 【机器学习】机器学习用到的常用术语
  9. 高时空损耗的Scanner会卡爆程序(记洛谷P1567的Java性能优化,Java语言描述)
  10. C#中 类和结构 值类型和引用类型以及 值传递和引用传递
  11. python中遇到的问题及解决方法_自己编程中遇到的Python错误和解决方法汇总整理...
  12. java名片生成_HTML5 canvas绘图基础(电子名片生成器源码)
  13. 虚拟机安装win10教程
  14. 杰里之echo 衰减系数调节【篇】
  15. vue项目用electron打包成windows(.exe)桌面应用--操作步骤、填坑方法、基础设置
  16. c++17之结构化绑定
  17. 【ZYNQ】petalinux包含自定义的动态库
  18. 天龙微信游戏找服务器,《天龙八部3》微信公众号积分系统维护公告
  19. 飞机大战的常见Bug
  20. [微服务]API 路由管理--Gateway网关

热门文章

  1. 十天冲刺---Day8
  2. zabbix自动发现(Discovery)功能使用
  3. 文件系统一些概念【更新完毕】
  4. python qq模块_常用的Python模块
  5. html5/css3响应式布局介绍
  6. [转载]unix环境高级编程备忘:理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID...
  7. hibernate注解方式来处理映射关系
  8. js点击图片查看大图,并可以拖动,且滚动滑轮放大缩小
  9. Codeforces 365C - Matrix(hash + yy)
  10. iTextSharp应用,生成pdf