Caliburn.Micro (以下簡稱CM) 是一個輕量的MVVM框架,它專註於幫助.NET平台WPF, Silverlight和Windows Phone應用程序開發者實現模式驅動的應用程序。CM將關注點分離的設計哲學奉為圭臬,它從開發過程的不同方面提供了許多有用的功能,可幫助開發者編寫維護性更好、更乾淨的代碼。
一、簡介
Caliburn.Micro 的官方網站是 http://caliburnmicro.com/。 CM非常適合使用組件化、Mvvm、IoC開發模式的開發者。採用 CM 框架可使您的代碼更簡潔、更易於理解和維護。
二、常用功能
1. 通過命令綁定到View,實現了ViewModel與View之間的松耦合。
CM 提供了多種方式來實現命令綁定:Command, Message 和 Event 等。其中 Command方式是默認方式,消息和事件方式均可以通過視圖模型進行觸發以實現鬆散耦合。這些綁定機制都遵循“約定優於配置”的原則。
public class MyViewModel : Screen
{
public void SayHello()
{
MessageBox.Show("Say Hello");
}
}
2. 通過依賴注入,提供了一種可測試的方式進行開發。
Caliburn.Micro 默認集成 Simple Injector,也可以很容易地切換到其他IoC容器。以下是一個很簡單的示例:
public class MyAppBootstrapper : BootstrapperBase
{
private readonly SimpleInjector.Container _container = new SimpleInjector.Container();
protected override void Configure()
{
_container.RegisterSingleton();
_container.RegisterSingleton();
_container.RegisterSingleton();
//Register ViewModels
_container.Register();
}
}
3. 通過消息,在ViewModel之間提供了一種鬆散耦合的方式進行通信。
當視圖模型不需要直接知道消息目標的時候,觸發消息會更加方便。視圖模型和消息目標可以同步或異步響應觸發消息。CM 通信機制支持實現 IHandle 接口的視圖模型進行事件的訂閱、取消訂閱和響應。以下是一個簡單的消息監聽和響應:
public class PublishViewModel : Screen, IHandle
{
private readonly IEventAggregator _eventAggregator;
public PublishViewModel(IEventAggregator eventAggregator)
{
_eventAggregator = eventAggregator;
_eventAggregator.Subscribe(this);
}
public void Publish()
{
_eventAggregator.PublishOnUIThread(new MyMessage());
}
public void Handle(MyMessage message)
{
MessageBox.Show("Got the Message");
}
protected override void OnDeactivate(bool close)
{
base.OnDeactivate(close);
_eventAggregator.Unsubscribe(this);
}
}
三、MVVM應用
在MVVM模式中,應用程序按照模型、視圖模型和視圖的分層方式進行。CM框架可以大大提高開發人員的開發效率。開發人員只需要編寫ViewModel層,剩下的都會自動完成。
此外,CM 還提供了大量命令和事件,可用於更高級的MVVM應用場景。部分MVVM的實現內容如下:
https://github.com/canton7/Stylet
Stylet 是基於 Caliburn.Micro 和最新.NET Core的輕量級MVVM框架。 Stylet不僅支持WPF應用程序,而且完全支持通過 Avalonia XAML進行跨平台UI開發。
https://github.com/Caliburn-Micro/Caliburn.Metro
Caliburn.Metro 是將 Caliburn.Micro 和 Microsoft官方UI框架Metro 支持集成起來的庫,它使你在WPF應用中使用了漂亮的Metro界面。並且提供了一些常用組件以加速設計開發。
https://github.com/Caliburn-Micro/Caliburn.Fody
Caliburn.Fody是一個 Visual Studio 的擴展,它可以通過解決方案來自動添加PropertyChanged、OnPropertyChanged和OnPropertyChange方法。Caliburn.Micro 中通常我們要實現的一些方法就是在ViewModel中的屬性值發生更改時需要通知視圖。但這樣的處理過於繁瑣。Caliburn.Fody 是面向切面編程的思想,代碼上沒有任何修改,它會自動集成到編譯過程中。
https://github.com/ChernenkovS/Caliburn.Micro.StatePreservation
應用程序中涉及 Windows 的重啟、用戶清理等操作,會丟失之前用戶上下文的重要數據。Caliburn.Micro.StatePreservation庫可以幫助您在不依賴關鍵值的情況下將應用程序狀態保存並恢復到上次保存的狀態。
https://github.com/fabxoe/Caliburn.Ninject
Caliburn.Ninject是一個深度集成 Ninject 的依賴注入框架,它支持透明綁定和 UML圖生成。它可以在WPF應用程序中使用,並且完全有效。
除了這些應用框架之外,還有很多其他的組件和插件已經被開發出來。這些組件和插件可以在Github上找到。
結束語
Caliburn.Micro 是一個功能強大的框架,它提供了許多功能和工具,可以幫助您在WPF應用程序上實現MVVM模式。這篇文章介紹了CM的基礎概念和局限性,以及CM如何為各種MVVM應用程序開發提供支持。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/259518.html