C# wpf编程CM框架快速入门项目实例
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框架快速入门项目实例相关推荐
- Quartz 框架快速入门(二)
尽可能的用声明式处理软件配置,其次才考虑编程式的方式.在上一篇<Quartz 框架快速入门(一)>中,如果我们要在 Job 启动之后改变它的执行时间和频度,必须去修改源代码重新编译.这种方 ...
- 【完结】给新手的12大深度学习开源框架快速入门项目
文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...
- java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】
第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定 ...
- 微信小程序wepy框架快速入门
微信小程序wepy框架快速入门 微信小程序简介 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一 ...
- 视频教程-Spring框架快速入门到精通-Java
Spring框架快速入门到精通 十年项目开发经验,主要从事java相关的开发,熟悉各种mvc开发框架. 王振伟 ¥18.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 ...
- python编程基础语法-Python编程基础语法快速入门
1. 课程咨询加老师助理微信:助理1微信: chenjinglei88 ,助理2微信: omf6757 2. 决定购买并想得到陈敬雷老师亲自指导(课程或自己项目难题均可)加老师微信: chenjing ...
- Quartz 框架快速入门(四)
Spring的scheduling.quartz包中对Quartz框架进行了封装,使得开发时不用写任何QuartSpring的代码就可以实现定时任务.Spring通过JobDetailBean,Met ...
- Quartz 框架快速入门(三)
在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建Trigger和Schedul ...
- Python学习笔记--10.Django框架快速入门之后台管理admin(书籍管理系统)
Python学习笔记--10.Django框架快速入门之后台管理 一.Django框架介绍 二.创建第一个Django项目 三.应用的创建和使用 四.项目的数据库模型 ORM对象关系映射 sqlite ...
最新文章
- 使用yum管理软件包
- leetcode算法第8题
- ELSE 技术周刊(2017.11.20期)
- wp_terms分类信息表—WordPress数据库研究(2.6.2版本)#8
- 每个Web开发者都应该知道的SOLID原则
- lunbuntu install maven
- snort入侵检测系统下载Linux,入侵检测系统Snort 2.9.0.2 发布
- 【机器学习】机器学习用到的常用术语
- 高时空损耗的Scanner会卡爆程序(记洛谷P1567的Java性能优化,Java语言描述)
- C#中 类和结构 值类型和引用类型以及 值传递和引用传递
- python中遇到的问题及解决方法_自己编程中遇到的Python错误和解决方法汇总整理...
- java名片生成_HTML5 canvas绘图基础(电子名片生成器源码)
- 虚拟机安装win10教程
- 杰里之echo 衰减系数调节【篇】
- vue项目用electron打包成windows(.exe)桌面应用--操作步骤、填坑方法、基础设置
- c++17之结构化绑定
- 【ZYNQ】petalinux包含自定义的动态库
- 天龙微信游戏找服务器,《天龙八部3》微信公众号积分系统维护公告
- 飞机大战的常见Bug
- [微服务]API 路由管理--Gateway网关
热门文章
- 十天冲刺---Day8
- zabbix自动发现(Discovery)功能使用
- 文件系统一些概念【更新完毕】
- python qq模块_常用的Python模块
- html5/css3响应式布局介绍
- [转载]unix环境高级编程备忘:理解保存的设置用户ID,设置用户ID位,有效用户ID,实际用户ID...
- hibernate注解方式来处理映射关系
- js点击图片查看大图,并可以拖动,且滚动滑轮放大缩小
- Codeforces 365C - Matrix(hash + yy)
- iTextSharp应用,生成pdf