基本配置、操作和约定
约 290 字小于 1 分钟
Caliburn.MicroWPFC#.net
2025-06-19
创建一个新的项目
创建一个新的项目,根据 快速开始#构建项目 中描述的,完成相关的配置,并修改相关文件的内容
ShellViewModel.cs:
public class ShellViewModel : PropertyChangedBase {
private 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($"Hello {Name}!");
}
}ShellView.xaml:
<Window
Height="450"
Title="ShellView"
Width="800"
mc:Ignorable="d"
x:Class="learn02.configuration.Views.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:learn02.configuration.Views"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<Label Content="Hello please write your name" />
<TextBox x:Name="Name" />
<Button Content="Click Me" x:Name="SayHello" />
</StackPanel>
</Window>执行结果

运行原理
Caliburn.Micro 使用简单的命名约定来定位 ViewModel 的视图。本质上,它获取全名并从中删除 Model。
所以给定 XXXViewModel,会去寻找 XXXView。
并排查看 View 和 ViewModel,可以看到
- x:Name="Name" 的 TextBox 绑定到 ViewModel 上的 Name 属性
- x:Name="SayHello" 的 Button 绑定到 ViewModel 上的同名方法
- 通过 CanSayHello 禁用按钮 SayHello
这些是 Caliburn.Micro 的 ActionMessage 和 Conventions 功能的基础知识。