首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C# WPF框架Caliburn.Micro入门实例1

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

作者头像
用户9127601
发布2021-11-01 17:05:14
发布2021-11-01 17:05:14
1.1K0
举报
文章被收录于专栏:dotNET编程大全dotNET编程大全

前言

3.29号有发过一篇

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

上次哪个章节忘记贴app.XAML的代码,不过源码里面可以看到,这节补上

代码语言:javascript
复制
<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如何搭建的,看看哪个框架下的属性变更和命令执行是怎么操作的,过来再做一下对比。

接下来看下后台代码:

代码语言:javascript
复制
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] 也是可以给所有属性变更附加上通知界面的功能的。

事件绑定:

这个框架下单击事件是可以自动匹配,不需要绑定,但是其它事件还是需要手动绑定的,绑定方法

代码语言:javascript
复制
cal:Message.Attach="[Event MouseDown]=[StartView_MouseDown($source,$eventArgs)];"

,需要引用

代码语言:javascript
复制
 xmlns:cal="http://www.caliburnproject.org"

后台:

代码语言:javascript
复制
 public void StartView_MouseDown(object sender, MouseButtonEventArgs e)
        {
         

        }

以上就是本节的全部内容,下期我们再会!

项目源码下载地址:

链接: https://pan.baidu.com/s/168BJwGWjPejRT8dV5u4cpg

提取码: dksr

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 dotNET编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档