01

启动项目

  1. 打开Visual Studio

  2. 创建一个名为“Caliburn.Micro.Hello”的新WPF应用程序

  3. 添加对Caliburn.Micro Nuget包的引用,最新的版本是4.0.173,更新日期2021年5月9日 (2021/5/9)

  4. 删除“MainWindow.xaml”并从“App.xaml”中删除StartupUri,使其如下所示:

<Application x:Class="Caliburn.Micro.Hello.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.Hello"><Application.Resources></Application.Resources>
</Application>

既然Caliburn.Micro更喜欢ViewModel优先的方法,让我们从这里开始。

①创建第一个ViewModel,创建一个新类并将其称为“ShellViewModel”。

②打开ShellViewModel.cs并使用以下代码进行实现:

using System.Windows;namespace Caliburn.Micro.Hello.ViewModels
{public class ShellViewModel : PropertyChangedBase{string name;public string Name{get { return name; }set{name = value;NotifyOfPropertyChange(() => Name);NotifyOfPropertyChange(() => CanSayHello);}}public bool CanSayHello{get { return !string.IsNullOrWhiteSpace(Name); }}public void SayHello(){MessageBox.Show(string.Format("Hello {0}!", Name)); //Don't do this in real life :)}}

请注意,ShellViewModel继承自PropertyChangedBase。这是一个基类,它实现了属性更改通知的基础结构,并自动执行UI线程封送。它会派上用场:)

现在我们有了ViewModel,让我们创建引导程序。引导程序将配置框架并告诉它该做什么。

创建一个名为“HelloBootstrapper”的新类。您可以使用以下一小段代码:

namespace Caliburn.Micro.Hello {public class HelloBootstrapper : BootstrapperBase {public HelloBootstrapper() {Initialize();}protected override void OnStartup(object sender, StartupEventArgs e) {DisplayRootViewFor<ShellViewModel>();}}
}

bootsapper允许您使用DisplayRootViewFor<TViewModel>()指定根视图模型的类型。“根视图模型”是Caliburn.Micro将实例化并用于显示应用程序的视图模型。

接下来,我们需要实现“HelloBootstrapper”,以便它在启动时运行。为此,请更新App.xaml,将引导程序添加到您的资源中,如下所示:

02

WPF

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:Caliburn.Micro.Hello"x:Class="Caliburn.Micro.Hello.App"><Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary><local:HelloBootstrapper x:Key="bootstrapper" /></ResourceDictionary></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>
</Application>

我们所要做的就是在应用程序中放置一个Caliburn.Micro引导程序。资源和它将完成其余的工作。现在,运行应用程序。您应该看到如下内容:

Caliburn.Micro创建了ShellViewModel,但不知道如何在没有视图的情况下渲染它。那么,让我们创建一个视图,让它查找。

创建名为“ShellView”的新用户控件(WPF)。使用以下xaml:

<UserControl x:Class="Caliburn.Micro.Hello.ShellView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Height="450" Width="800"><StackPanel><Label Content="Hello please write your name" /><TextBox x:Name="Name" /><Button x:Name="SayHello"Content="Click Me" /></StackPanel>
</UserControl>

再次运行应用程序。您现在应该可以看到UI:

在文本框中键入内容将启用该按钮,单击该按钮将显示一条消息:

03

工作原理

Caliburn.Micro使用一个简单的命名约定来定位ViewModels的视图。本质上,它接受全名并从中删除“Model”。

因此,给定:MyApp.ViewModels.MyViewModel

它将查找:MyApp.Views.MyView

并排查看视图和ViewModel,可以看到带有x:Name=“Name”的文本框绑定到ViewModel上的“Name”属性。您还可以看到,带有x:Name=“SayHello”的按钮绑定到ViewMModel上具有相同名称的方法。CanSayHello属性通过禁用按钮来保护对SayHello操作的访问。这些是Caliburn.Micro的ActionMessage和Conventions功能的基础。

还有很多东西要展示。接下来,我们可以集成一个IoC容器,比如MEF。

原文标题:Caliburn.Micro Xaml made easy

原文链接:https://caliburnmicro.com/documentation/configuration

翻译:dotnet编程大全

C#技术群 : 添加小编微信,mm1552923备注:进群!

C# WPF MVVM开发框架Caliburn.Micro快速搭建③相关推荐

  1. C# WPF MVVM开发框架Caliburn.Micro入门介绍①

    01 - Caliburn.Micro简介 Caliburn.Micro是一套基于XAML的MVVM模式的开发框架,它小巧而强大.在CaliburnMicro中只需要按照约定把View的名字加上后缀V ...

  2. C# WPF MVVM开发框架Caliburn.Micro View / View Model 命名⑨

    01 - 约定 在收到Caliburn Micro中有关视图和ViewModel解析的反馈后,我们添加了新功能,以简化类型解析,同时保持驱动它的健壮的基于正则表达式的名称转换机制.为了更好地了解这些新 ...

  3. C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

    01 - 关于Conventions Caliburn.Micro的一个主要特性是,它能够通过一系列约定消除对锅炉铭牌代码的需求.有些人喜欢习俗,有些人讨厌习俗.这就是为什么CM的约定是完全可定制的, ...

  4. C# WPF MVVM开发框架Caliburn.Micro Screens, Conductors 和 Composition⑦

    01 - Screens, Conductors and Composition Actions, Coroutines and Conventions往往最能吸引Caliburn.Micro的注意力 ...

  5. C# WPF MVVM开发框架Caliburn.Micro自定义引导程序④

    01 - 自定义引导程序 在上一部分中,我们讨论了Caliburn.Micro WPF应用程序的最基本配置,并演示了与操作和约定相关的两个简单功能.在这一部分中,我想进一步探讨Bootstrapper ...

  6. C# WPF MVVM开发框架Caliburn.Micro常用功能指南②

    这是Caliburn.Micro项目中最常用的约定和功能的快速指南. 01 - 事件连接 这会自动将控件上的事件关联到ViewModel上的方法. 常规约定: <Button x:Name=&q ...

  7. C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①

    使用名称Transformer NameTransformer是在Caliburn.Micro v1.1中引入的,它是ViewLocator和ViewModelLocator如何将类名映射到其伙伴角色 ...

  8. C# WPF MVVM开发框架Caliburn.Micro 自定义Conventions⑩

    处理自定义约定 虽然ViewLocator和ViewModelLocator类通过提供对每个类的NameTransformer实例的公共访问来支持非标准约定,但对于那些不熟悉正则表达式语法的人来说,添 ...

  9. C# WPF MVVM开发框架Caliburn.Micro IResult和协同程序⑥

    " 引言部分,总领全篇文章的中心内容." 01 - IResult and Coroutines 在前面,我提到了Actions概念的另一个引人注目的特性,称为协同程序.如果你以前 ...

最新文章

  1. 统治世界的 10 大算法,你知道几个?
  2. tp剩余未验证内容-8
  3. 5.fork和vfork
  4. PCL:PCL可视化显示点云
  5. 因子分析最少要有几个因子_Re0:魔女司教和魔女是什么关系?他们的魔女因子是魔女给的吗...
  6. 设计模式笔记十六:解释器模式
  7. C语言编辑飘扬的红旗代码,C语言 飘动的红旗(要有旗杆)
  8. LeetCode 85.最大矩形
  9. 命令行进入android设置,命令行编译生成APK
  10. visio软件接口流程图_绘制流程图——Visio可以让你事半功倍哦!
  11. Java提取视频中的音频(JavaCV)
  12. matlab适应度函数为什么有2个输出,基于遗传算法的LQR优化问题,适应度函数总是报错。...
  13. 互联网”还是“技术”?派系分明的电子烟市场
  14. C# Excel命名区域(一)-创建命名区域
  15. Java博客项目(重点)
  16. 轻听-最好的解压助眠医疗轻音乐集
  17. insta360 pro2 全景摄像机使用记录
  18. Linux---Linux中Ubuntu镜像之下搭建FTP服务
  19. android应用开发-从设计到实现 3-9 Origami动态原型设计
  20. Ceph实战(五):Ceph的块设备基本概念,创建以及其特点(基于nautilus版本)

热门文章

  1. java读取csv文件
  2. poj 3125 Printer Queue(STL注意事项)
  3. web 网页按比例显示图片 js
  4. iOS开发 CGAffineTransform 让图片旋转, 旋转后获得图片旋转的角度
  5. MongoDB的安装与使用
  6. 如何用DW设计界面 结合 VS设计后台代码
  7. angularjs的ng-repeat回调
  8. 如何下载EP的各个版本?
  9. LeetCode:Sudoku Solver Valid Sudouku
  10. 将数字转化为液晶显示屏的样子