[Caliburn.Micro专题][1]快速入门

开场白:本系列为个人学习记录,才疏学浅,存在表述或理解错误,请多指教。分享不易,和谐交流,勿喷。

1. 什么是Caliburn.Micro?

一个基于WPF的MVVM框架。本系列文档中将一直会把Caliburn.Micro框架简称为CM框架

2. 我是否需要学习CM框架?

如果你需要基于开发一个运行在Windows平台上的GUI程序,那么CM框架是个不错的选择。

3. 如何下手?

3.1 需要理解以下几个概念:

  • Xmal:界面。类xml的界面描述语言。通常需要一个后台.cs文件。
  • Bootstrapper: 启动器。可以理解为它封装了程序启动的过程。
  • Views:视图。使用xmal语言描述界面布局和元素。
  • ViewModels: 为界面显示提供数据和逻辑支撑。

3.2 工程概览

开发环境: VS 2019

3.3 示例代码

<!-- App.xaml -->
<Application x:Class="Caliburn.Micro.Demo.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.Demo">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary>
                    <local:Bootstrapper x:Key="bootstrapper"/>
                </ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
//Bootstrapper.cs
using Caliburn.Micro.Demo.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace Caliburn.Micro.Demo
{
    public class Bootstrapper : BootstrapperBase
    {
        public Bootstrapper()
        {
            Initialize();
        }

        protected override void OnStartup(object sender, StartupEventArgs e)
        {
            DisplayRootViewFor<ShellViewModel>();
        }
    }
}

<!-- ShellView.xaml -->
<Window x:Class="Caliburn.Micro.Demo.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.Demo.Views"
        xmlns:cal="http://www.caliburnproject.org"
        mc:Ignorable="d"
        Name="HandwriterNameInXaml"
        Title="ShellView" Height="300" Width="500">
    <Grid>
        
    </Grid>
</Window>

//ShellViewModel.cs
using Caliburn.Micro.Demo.Views;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;

namespace Caliburn.Micro.Demo.ViewModels
{
    public class ShellViewModel
    {
        
    }
}

posted @   OneNX  阅读(469)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示