我试图从视图模型的工具栏项中设置padge 我有一个名为IToolbarItemBadgeService
的接口
public interface IToolbarItemBadgeService
{
void SetBadge(Page page, ToolbarItem item, string value, Color backgroundColor, Color textColor);
}
我想在注册接口后在工具栏项中设置徽章,我使用了此代码,但它抛出了异常
private IToolbarItemBadgeService _toolbarItemBadge;
并在构造函数中
public MainTabPageViewModel(IToolbarItemBadgeService toolbarItemBadge)
{
_toolbarItemBadge = toolbarItemBadge;
_toolbarItemBadge.SetBadge(MainTabPage.Main,MainTabPage.Main.ToolbarItems.FirstOrDefault() , $"{BaseService.CartCounter}", Color.Orange, Color.White);
}
抛出异常:
Unity.Exceptions.ResolutionFailedException: 解决 依赖项失败,类型 = 'System.Object',name = 'MainTabPage'。 在以下情况下发生异常:调用构造函数 LGMobileApp.Views.MainTabPage((.例外情况是: 解决方案失败异常 - 依赖项的解析失败,键入 = 'LGMobileApp.ViewModels.MainTabPageViewModel', name = '(none('.在以下情况下发生异常:调用构造函数 LGMobileApp.ViewModels.MainTabPageViewModel(Prism.Navigation.INavigationService navigationService, LGMobileApp.Helpers.IToolbarItemBadgeService 工具栏项目徽章(。异常为:空引用异常 - 对象 引用未设置为对象的实例。
从异常中,您可以看到您的服务未注册,无法解析。
您需要注册您的IToolbarItemBadgeService
接口,并在RegisterTypes
方法中App.cs
内部实现。
像这样:
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<IToolbarItemBadgeService, ToolbarItemBadgeService>();
// .. Other registration code
}
在此之后,您将能够使用 注入IToolbarItemBadgeService
MainTabPageViewModel
.
祝您在编码方面好运!