Dependency injection 如何从ViewModel Xamarin表单访问工具栏项
我试图从viewmodel 我有一个名为Dependency injection 如何从ViewModel Xamarin表单访问工具栏项,dependency-injection,xamarin.forms,prism,Dependency Injection,Xamarin.forms,Prism,我试图从viewmodel 我有一个名为IToolbarItemBadgeService public interface IToolbarItemBadgeService { void SetBadge(Page page, ToolbarItem item, string value, Color backgroundColor, Color textColor); } 我想在我注册界面后使用的工具栏项中设置badge,但它引发异常
IToolbarItemBadgeService
public interface IToolbarItemBadgeService
{
void SetBadge(Page page, ToolbarItem item, string value, Color backgroundColor, Color textColor);
}
我想在我注册界面后使用的工具栏项中设置badge,但它引发异常
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',名称='MainTabPage'。
调用构造函数时发生异常
LGMobileApp.Views.MainTabPage()。例外情况是:
ResolutionFailedException-依赖项的解析失败,类型
='LGMobileApp.ViewModels.MainTabPageViewModel',name='(无)'。调用构造函数时发生异常
LGMobileApp.ViewModels.MainTabPageViewModel(Prism.Navigation.INavigationService
导航服务,LGMobileApp.Helpers.IToolbarItemBadgeService
工具栏(项目徽章)。异常为:NullReferenceException-对象
引用未设置为对象的实例
从异常中,您可以看到您的服务未注册,无法解析 您需要注册您的
IToolbarItemBadgeService
接口,并在RegisterTypes
方法中的App.cs
中实现
大概是这样的:
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<IToolbarItemBadgeService, ToolbarItemBadgeService>();
// .. Other registration code
}
受保护的覆盖无效注册表类型(IContainerRegistry containerRegistry)
{
containerRegistry.Register();
//…其他注册码
}
在此之后,您将能够使用IToolbarItemBadgeService
,它被注入到您的MainTabPageViewModel
中
祝你在编码方面好运 在我看来你没有出口iToolbaritemBadgeService你什么意思?您可以分享示例吗?向我们展示您注册
IToolbarItemBadgeService
实现的代码。问题是实例总是从MainTabPage.Main提交为空。。thx:)@AlmirVuk,谢谢您的回答,但是如何从ViewModel.SetBadge(页面、工具栏项、字符串值、颜色背景颜色、颜色文本颜色)传递变量;视图模型不知道ToolBarItem我收到一个错误,当我尝试从中调用它时,当前上下文中不存在“ToolbarItems”ViewModel@Ali123从view.cs到viewmodel取一个实例