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

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

e5ba313d5a3e88b2f1cc7a3f9897d04f.gif

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

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

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

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

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

想进技术交流群的加微信zls20210502(可以扫描下方二维码),这里没有套路,没有广告,只为打造纯净的技术交流群,(想进群捣乱打广告的免加,会有技术考核,别白费心思

53e6c7004f44ae7bcceac0d26906bf20.png

接下来看下后台代码:

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

fae478ac9dbbc7972aadc4dbee213524.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值