Caliburn.Micro是一个WPF的MVVM框架,官方介绍是“ 这个是用于创建各类型的XAML平台应用的精简而又强大的框架。强力支持MVVM类的模式,使你的项目更快的建立,并且不牺牲代码质量以及可测试性”。
已经有一些框架比如Prism等,那为什么要学习使用Caliburn.Micro这个框架?
使用配置步骤
导入与架构
在nuget中引入Caliburn.Micro
然后再vs2022中创建他的架构模式,
配置启动项
Caliburn的逻辑是他有一个初始化启动文件,这个文件命名为Bootstrapper.cs,它是用来作为配置启动用的。
他的逻辑就是,一般wpf是从app.xaml中进行启动的,然后启动后的主页是系统默认的MainWindow.xaml。所以这里更改为Bootstrapper.cs用来配置启动。
在搞这个之前,我们先创建一个ShellView和一个ShellViewModel作为启动页面和启动页面的逻辑。其中这个ViewModel继承于
public class ShellViewModel: Conductor<object>
{
}
然后他的View我们创建后,它内部的内容需要将其命名为x:Name="ActiveItem",这个是为了告诉这个框架,让他定位到他要显示的内容是什么。然后可以删除掉MainWindow.Xaml文件,这个根据自己需要更改。
创建后代码如下——
<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
public class Bootstrapper: BootstrapperBase
{
//构造函数
public Bootstrapper()
{
Initialize();
}
//重写startup方法,用来告诉框架启动页面是哪一个
protected override async void OnStartup(object sender, StartupEventArgs e)
{
await DisplayRootViewForAsync(typeof(ShellViewModel));
}
}
然后修改app.xaml如下
<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>
其中修改项为——》
这个目的是让其找到Bootstrapper再通过其逻辑通过相应的ViewModel打开相对应的页面。
配置日志
日志的代码为Caliburn中所有,其中为
public static void StartDebugLogger()
{
LogManager.GetLog = type => new DebugLog(type);
}
使用时,在Bootstrapper的构造函数中加入StartDebugLogger()即可。
以上就是Caliburn.Micro的初始配置,后期会跟进一些内容。