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

相关推荐
c#上位机10 小时前
wpf中Grid的MouseDown 事件无法触发的原因
c#·wpf
△曉風殘月〆10 小时前
如何在WPF中实现ComboBox多选
wpf
csdn_aspnet12 小时前
如何使用现有工具进行 .NET 8 迁移 Wpf
wpf·.net 8
123梦野1 天前
WPF——动画
wpf
攻城狮CSU1 天前
WPF 疑点汇总2.HorizontalAlignment和 HorizontalContentAlignment
wpf
c#上位机1 天前
wpf之命令
c#·wpf
没有bug.的程序员2 天前
分布式链路追踪:微服务可观测性的核心支柱
java·分布式·微服务·架构·wpf
Aevget2 天前
DevExpress WPF中文教程:Data Grid - 如何使用虚拟源?(一)
c#·wpf·界面控件·devexpress·ui开发
The Sheep 20234 天前
WPF自定义路由事件
大数据·hadoop·wpf
阳光雨滴4 天前
使用wpf用户控件编程落石效果动画
c++·wpf