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的初始配置,后期会跟进一些内容。

相关推荐
敲代码的嘎仔1 天前
从集群锁失效到异步领券:我用分布式锁 + Redisson + MQ 把领券接口 RT 从 200ms 压到 15ms
java·数据库·redis·分布式·缓存·ai·wpf
闲云自留地1 天前
OpenStack 的身份管家:Keystone 令牌、RBAC 权限模型拆解
wpf·openstack
FuckPatience3 天前
WPF 窗体唤醒,判断是否已存在,存在则弹出
wpf
程序员清风3 天前
从单体应用到微服务:后端系统拆分的基本方法
微服务·架构·wpf
FuckPatience4 天前
WPF 改变根据某一列条件改变行样式
wpf
dalong105 天前
WPF:DataGrid样式
wpf
samble7 天前
从零搭建工业控制系统(二十二):线程安全与并发控制
c#·wpf·并发·mvvm·线程安全·工业控制
姜穆澜7 天前
OneID 从 0 到 1 完整生产案例(三)
大数据·wpf
dalong107 天前
WPF:MVVM 示例
大数据·wpf
samble7 天前
从零搭建工业控制系统(二十一):状态管理系统——中心状态对象设计
c#·wpf·mvvm·状态管理·工业控制