C# WPF框架Caliburn.Micro入门实例1

前言

3.29号有发过一篇

C# WPF框架Caliburn.Micro快速搭建

上次哪个章节忘记贴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框架如何搭建起来,今天我们接着上次的话题继续讲解。

操作效果图如下:(界面只为方便讲解说明,没有做美观优化,凑合着看)

C# WPF框架Caliburn.Micro入门实例1

remark:gif动图采用ScreenToGif制作,官网下载地址https://pc.qq.com/detail/13/detail_23913.html

仅仅看界面,貌似看不出啥优势,但是我告诉你再这个框架下

①单击事件不用去添加代码绑定到控件,直接通过控件名称就可以自动匹配;

②属性变更不需要添加代码去通知界面,viewmodel只需要继承Screen这个类就行了。

神奇吧?不觉得神奇的话那麻烦你先去b站看一下刘铁猛的mvvm如何搭建的,看看哪个框架下的属性变更和命令执行是怎么操作的,过来再做一下对比。

接下来看下后台代码:

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上搜索安装

C# WPF框架Caliburn.Micro入门实例1

安装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