Caliburn.Micro在Xamarin.Forms中绑定失效及配置相关问题咨询
一、Caliburn.Micro维护状态与替代方案
Caliburn.Micro目前已基本停止活跃维护,最新稳定版发布于2020年,后续仅偶发极小的兼容性修复,Xamarin相关的适配更新早已停滞。
可替代的同类MVVM框架如下:
- CommunityToolkit.Mvvm:微软官方维护的轻量MVVM框架,无额外依赖,性能优异,支持Xamarin.Forms、MAUI、WPF等所有.NET平台,是目前官方首推的方案
- Prism:生态成熟,对Xamarin.Forms、MAUI的路由、依赖注入、导航封装非常完善,社区活跃度高
- MvvmCross:跨平台支持全面,适合多端复用逻辑的复杂项目
二、Xamarin.Forms中Caliburn.Micro的配置步骤
需要额外配置Bootstrapper,具体操作如下:
步骤1:创建自定义Bootstrapper类
using Caliburn.Micro; using Xamarin.Forms; public class AppBootstrapper : BootstrapperBase { private SimpleContainer _container; public AppBootstrapper() { Initialize(); } // 配置依赖注入容器 protected override void Configure() { _container = new SimpleContainer(); _container.Instance(_container); // 注册应用实例 _container.Singleton<App>(); // 注册你用到的所有ViewModel _container.PerRequest<AboutViewModel>(); } // 重写实例获取逻辑对接容器 protected override object GetInstance(Type service, string key) { return _container.GetInstance(service, key); } protected override IEnumerable<object> GetAllInstances(Type service) { return _container.GetAllInstances(service); } protected override void BuildUp(object instance) { _container.BuildUp(instance); } // 配置启动页 protected override void OnStartup(object sender, StartupEventArgs e) { DisplayRootViewForAsync<AboutViewModel>(); } }
步骤2:修改App.xaml.cs逻辑
删除原有构造函数中设置MainPage的代码,改为实例化Bootstrapper:
public partial class App : Application { public App() { InitializeComponent(); // 无需手动设置MainPage,Bootstrapper会自动关联ViewModel与View new AppBootstrapper(); } }
额外注意事项
Caliburn.Micro默认使用PascalCase命名约定匹配控件与方法,你现有代码中方法名test为小写,与x:Name一致但不符合默认约定,要么将方法名改为Test,要么在Bootstrapper的Configure方法中添加规则修改命名匹配逻辑。
三、依赖包说明
你已安装的Caliburn.Micro.Core和Caliburn.Micro.Xamarin.Forms两个包已满足需求,无需安装其他额外依赖。需要注意两个包的版本必须完全一致,且要和你使用的Xamarin.Forms版本兼容,若使用较高版本Xamarin.Forms,可能存在适配问题。
内容的提问来源于stack exchange,提问作者mans
相关产品推荐
相关产品推荐

