Caliburn.Micro框架学习笔记——初始配置

Caliburn.Micro是一个WPF的MVVM框架,官方介绍是" 这个是用于创建各类型的XAML平台应用的精简而又强大的框架。强力支持MVVM类的模式,使你的项目更快的建立,并且不牺牲代码质量以及可测试性"。

MVVM介绍

Model View ViewModel这样一个三层的一个架构。就WPF而言,View表示的是Xaml层的视图表示层,ViewModel主要用来接收UI层过来的命令以及包含处理这些命令的逻辑。Model层表示的是数据实体,但是现在也有将数据实体再分一层为DTO层,主要用来做数据库的交互。

已经有一些框架比如Prism等,那为什么要学习使用Caliburn.Micro这个框架?

这个框架宣称,它很灵活,同时能够使得命令不在UI层中进行控制而是直接在VM层中进行操作。剩下的,我们先看看它能够处理什么问题。

使用配置步骤

导入与架构

在nuget中引入Caliburn.Micro

然后再vs2022中创建他的架构模式,

配置启动项

Caliburn的逻辑是他有一个初始化启动文件,这个文件命名为Bootstrapper.cs,它是用来作为配置启动用的。

他的逻辑就是,一般wpf是从app.xaml中进行启动的,然后启动后的主页是系统默认的MainWindow.xaml。所以这里更改为Bootstrapper.cs用来配置启动。

在搞这个之前,我们先创建一个ShellView和一个ShellViewModel作为启动页面和启动页面的逻辑。其中这个ViewModel继承于

cs 复制代码
public class ShellViewModel: Conductor<object>
    {
    }

然后他的View我们创建后,它内部的内容需要将其命名为x:Name="ActiveItem",这个是为了告诉这个框架,让他定位到他要显示的内容是什么。然后可以删除掉MainWindow.Xaml文件,这个根据自己需要更改。

创建后代码如下------

cs 复制代码
<Window x:Class="Caliburn.Micro.Tutorial.Wpf.Views.ShellView"
        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:local="clr-namespace:Caliburn.Micro.Tutorial.Wpf.Views"
        mc:Ignorable="d"
        Title="ShellView" Height="450" Width="800">
    <Grid>
    <ContentControl x:Name="ActiveItem" Margin="20"/>
  </Grid>
</Window>

最后初始状态下的Bootstrapper代码为,其中该类继承自BootstrapperBase

cs 复制代码
public class Bootstrapper: BootstrapperBase
{

//构造函数
public Bootstrapper()
  {
  Initialize();
  }
//重写startup方法,用来告诉框架启动页面是哪一个
 protected override async void OnStartup(object sender, StartupEventArgs e)
      {
      await DisplayRootViewForAsync(typeof(ShellViewModel));
      }

}

然后修改app.xaml如下

cs 复制代码
<Application x:Class="Caliburn.Micro.Tutorial.Wpf.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:Caliburn.Micro.Tutorial.Wpf">
    <Application.Resources>
      <ResourceDictionary>
           <ResourceDictionary.MergedDictionaries>
               <ResourceDictionary>
                   <local:Bootstrapper x:Key="Bootstrapper" />
               </ResourceDictionary>
             </ResourceDictionary.MergedDictionaries>
       </ResourceDictionary>
    </Application.Resources>
</Application>

其中修改项为------》

<ResourceDictionary>

<ResourceDictionary.MergedDictionaries>

<ResourceDictionary>

<local:Bootstrapper x:Key="Bootstrapper" />

</ResourceDictionary>

</ResourceDictionary.MergedDictionaries>

</ResourceDictionary>

这个目的是让其找到Bootstrapper再通过其逻辑通过相应的ViewModel打开相对应的页面。

配置日志

日志的代码为Caliburn中所有,其中为

cs 复制代码
 public static void StartDebugLogger()
   {
   LogManager.GetLog = type => new DebugLog(type);
   }

使用时,在Bootstrapper的构造函数中加入StartDebugLogger()即可。

以上就是Caliburn.Micro的初始配置,后期会跟进一些内容。

相关推荐
Scout-leaf5 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
柒.梧.7 天前
基于SpringBoot+JWT 实现Token登录认证与登录人信息查询
wpf
十月南城10 天前
Flink实时计算心智模型——流、窗口、水位线、状态与Checkpoint的协作
大数据·flink·wpf
听麟13 天前
HarmonyOS 6.0+ 跨端会议助手APP开发实战:多设备接续与智能纪要全流程落地
分布式·深度学习·华为·区块链·wpf·harmonyos
@hdd13 天前
Kubernetes 可观测性:Prometheus 监控、日志采集与告警
云原生·kubernetes·wpf·prometheus
zls36536513 天前
C# WPF canvas中绘制缺陷分布map
开发语言·c#·wpf
专注VB编程开发20年13 天前
c#Redis扣款锁的设计,多用户,多台电脑操作
wpf
闲人编程14 天前
定时任务与周期性调度
分布式·python·wpf·调度·cron·定时人物·周期性
zls36536514 天前
C# WPF canvas中绘制缺陷分布map并实现缩放
开发语言·c#·wpf
数据知道15 天前
PostgreSQL:Citus 分布式拓展,水平分片,支持海量数据与高并发
分布式·postgresql·wpf