前言
3.29号有发过一篇
上次哪个章节忘记贴app.XAML的代码,不过源码里面可以看到,这节补上
<Application x:Class="WpfApp8.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp8">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:MyBootstrapper x:Key="bootstrapper"/>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
详细介绍了一个最简单的Caliburn.Micro框架如何搭建起来,今天我们接着上次的话题继续讲解。
操作效果图如下:(界面只为方便讲解说明,没有做美观优化,凑合着看)
remark:gif动图采用ScreenToGif制作,官网下载地址https://pc.qq.com/detail/13/detail_23913.html
仅仅看界面,貌似看不出啥优势,但是我告诉你再这个框架下
①单击事件不用去添加代码绑定到控件,直接通过控件名称就可以自动匹配;
②属性变更不需要添加代码去通知界面,viewmodel只需要继承Screen这个类就行了。
神奇吧?不觉得神奇的话那麻烦你先去b站看一下刘铁猛的mvvm如何搭建的,看看哪个框架下的属性变更和命令执行是怎么操作的,过来再做一下对比。
想进技术交流群的加微信zls20210502(可以扫描下方二维码),这里没有套路,没有广告,只为打造纯净的技术交流群,(想进群捣乱打广告的免加,会有技术考核,别白费心思)
接下来看下后台代码:
using Caliburn.Micro;
using System.Windows;
using System.Windows.Input;
namespace WpfApp8
{
//[AddINotifyPropertyChangedInterface] 因为Screen 继承了INotifyPropertyChanged 所以这句就不用加了
class StartViewModel : Screen
{
public StartViewModel()
{
}
public string btnStr { get; set; } = "1111";
public string lblStr { get; set; } = "2222";
public void testBtn()
{
btnStr = "you hit mine! i am button";
}
public void btnCtrl1()
{
lblStr = "you hit mine! i am lable";
}
public void StartView_MouseDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("我是MouseDown事件!");
}
}
}
代码简洁到让人发指,这个框架就是这么酸爽!
关于属性变更通知界面说明:
①只要你的类继承了Screen,或者直接继承INotifyPropertyChanged这个接口,类中所有的属性变更就会自动通知界面,无需再去手动没每个属性附加NotifyPropertyChanged("字段名");
②如果你既不想继承Screen又不想继承NotifyPropertyChanged,那还有一种方式,就是再nuget上搜索安装
安装ok以后,引用对应的域名空间
然后再类的外层添加[AddINotifyPropertyChangedInterface] 也是可以给所有属性变更附加上通知界面的功能的。
事件绑定:
这个框架下单击事件是可以自动匹配,不需要绑定,但是其它事件还是需要手动绑定的,绑定方法
cal:Message.Attach="[Event MouseDown]=[StartView_MouseDown($source,$eventArgs)];"
,需要引用
xmlns:cal="http://www.caliburnproject.org"
后台:
public void StartView_MouseDown(object sender, MouseButtonEventArgs e)
{
}
以上就是本节的全部内容,下期我们再会!
项目源码下载地址:
链接: https://pan.baidu.com/s/168BJwGWjPejRT8dV5u4cpg
提取码: dksr