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


运行结果

6bee4bb6df1298cb75ecbc906d3ecaaf.gif

05


源码下载

百度网盘链接:      

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

提取码:1314

小编微信:mm1552923   

公众号:dotNet编程大全      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之两个应用之间的通信与调用

Android 里面的两个APK通信的方式有哪些&#xff1f; 自己网上查了查&#xff0c;总结了一下&#xff1a; 1. 广播&#xff0c;最简单的方法&#xff0c;这个实现起来比较简单 2. AIDL&#xff0c;功能强大&#xff0c;支持一对多并发通信&#xff0c;支持实时通信。 3. 网…

NSString 字符串 操作 常用

//将NSData转化为NSString NSString* str [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];//将NSString 转化为NSData (NSString.h)- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding; //载一个字符串中删除一个字符或字符串[_di…

[HTML5]3D标签云

index.html <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <title>3D标签云</title> <link rel"stylesheet" type"text/css" href"http://webapplee-word…

正则表达式匹配字符串的问题

如何用正则表达式做模糊查询&#xff1f;&#xff1f; 是可以的比如“.*?name.*?”就可以匹配找出所有含有"name"的字符串&#xff0c;就像mysql查询用"where .. like %name%"一样的。并且正则可以更灵活&#xff0c;如果你写的".*?name\d{2}.*?&…

java.lang.IllegalStateException: attempt to re-open an already-closed object

这个错误出现的原因是因为我在一个数据库操作的时候&#xff0c;在循环读取数据的时候&#xff0c;把datebase给close了&#xff0c;会出现这样的错误&#xff0c;还有一直情况就是我们在写数据库操作的时候&#xff0c;需要调用到其它函数的相关操作&#xff0c;当其它函数操作…

sas常用选项

System options&#xff1a; obs&#xff1a;表示需要处理的最后一行observation&#xff0c;如果指定其为max&#xff0c;就表示处理到最后一条observation firstobs&#xff1a;表示需要从第几行observation开始处理&#xff0c;默认是1observation msglevel&#xff1a;默认…

我的2021年终总结:初为人父,从头再来

【年终总结】| 作者/Edison最近公司开始一股年终总结浪潮&#xff0c;看着同事们写大作文式的“内卷”总结&#xff0c;我不禁在想我这一年做了什么&#xff0c;那么也就有了这篇总结推文&#xff0c;当然它也是我每年的习惯。传送门&#xff1a;Edison的2020年终总结1也谈2021…

Java 基础【09】你的多继承纳?

Java省略了许多很少用到&#xff0c;缺乏了解&#xff0c;混淆功能的C &#xff0c;在我们的经验中带来更多的悲伤大于收益 。 -----James Gosling James Gosling 这个人大家应该很熟悉&#xff0c;就是最初设计Java 语言的的程序…

开源项目导入eclipse的一般步骤[转]

下载到开源项目后&#xff0c;我们还是希望导入到eclipse中还看&#xff0c;这样要方便点&#xff0c;一般的步骤是这样的 打开源代码目录&#xff0c; 如果看到里面有.calsspath .project文件&#xff0c;那么说明这个项目本来就是eclipse开发的&#xff0c;那么在eclipse中-&…

死锁活锁

死锁&#xff1a; 是指两个或两个以上的进程在执行过程中&#xff0c;因争夺资源而造成的一种互相等待的现象&#xff0c;若无外力作用&#xff0c;它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁&#xff0c;这些永远在互相等待的进程称为死锁进程。 由于资源…

说说可重复函数(Reentrant) 和线程安全(thread-safe)的区别与联系

在讲可重复函数与线程安全之前先来了解什么是可重复函数和线程安全。可重复函数&#xff1a;在多线程或有异常控制流的情况下,当某个函数运行到中途时,控制流(也就是当前指令序列)就有可能被打断而去执行另一个函数.而"另一个函数"很有可能是它本身.&#xff0c;如果…

inputn函数与input函数的区别

inputn函数与input函数的区别(这里的比较类似于前面的inputc函数) ①input函数可以将字符型变量转换为字符型或数值型&#xff0c;这取决于指定的输入格式informat&#xff1b;而inputn函数只能将字符型变量转换为数值型。从这个角度上看&#xff0c;跟inputc函数一样&#xff…

Blazor中的无状态组件

声明&#xff1a;本文将RenderFragment称之为组件DOM树或者是组件DOM节点&#xff0c;将*.razor称之为组件。1. 什么是无状态组件如果了解React&#xff0c;那就应该清楚&#xff0c;React中存在着一种组件&#xff0c;它只接收属性&#xff0c;并进行渲染&#xff0c;没有自己…

一次性撤稿70篇!中国学者论文再现大规模撤稿 | 附全名单

全世界只有3.14 % 的人关注了爆炸吧知识2021年1月20日&#xff0c;英国皇家化学学会&#xff08;Royal Society of Chemistry&#xff0c;简称RSC&#xff09;表示&#xff0c;他们正在考虑撤回68篇可能出自“论文工厂”的文章&#xff0c;但当时并没有公布这68篇文章的详情。近…

git代码库的使用

代码库/使用指南 http://learn.zone.jd.com/cmsuser/index.htm 在win7系统下使用TortoiseGit(乌龟git)简单操作GitOSC http://my.oschina.net/longxuu/blog/141699转载于:https://www.cnblogs.com/mssql8/p/3773995.html

二叉树前序、中序、后序遍历相互求法

今天来总结下二叉树前序、中序、后序遍历相互求法&#xff0c;即如果知道两个的遍历&#xff0c;如何求第三种遍历方法&#xff0c;比较笨的方法是画出来二叉树&#xff0c;然后根据各种遍历不同的特性来求&#xff0c;也可以编程求出&#xff0c;下面我们分别说明。 首先&…

搭建SVN服务

SVN版本管理工具管理着随时间改变的各种数据像普通文件服务器或者ftp服务器&#xff0c;但是&#xff0c;SVN会备份并记录每个文件每一次的修改记录Subversion官网&#xff1a;http://subversion.tigris.org/http://subversion.apache.org/svn客户端&#xff1a; http://tortoi…

linux awk命令总结

1. 除去重复项, 这个不多说, 只给出代码&#xff1a; awk !a[$0] file(s) awk !($0 in a){a[$0];print} file(s) 另一种&#xff1a;http://bbs.chinaunix.net/thread-1859344-1-1.html 2. 计算总数&#xff08;sum&#xff09;&#xff0c;如&#xff1a…