我正在使用Nuget CommunityToolkit.Maui.Views。我的Maui应用程序也在使用viewModels。现在我想从viewmodel方法显示我的自定义对话框。但是
this.ShowPopup(new DialogPopup());
只能在Page对象上调用。
我可以在我的viewModel中将值Page赋给property,但我不确定这是实现它的最佳选择:
private readonly MainViewModel _mainViewModel;
public MainPage(MainViewModel vm)
{
InitializeComponent();
BindingContext = vm;
_mainViewModel = vm;
_mainViewModel.Page = this;
}
在视图模型中
public Page Page { get; set; }
以及
Page.ShowPopup(new DialogPopup());
ShowPopup方法如下所示:
public static void ShowPopup<TPopup>(this Page page, TPopup popup) where TPopup : Popup {...}
我应该如何实现它才能在我的视图模型中使用这个ShowPupup方法?
我使用Net7.0和依赖注入来初始化我的对象。
1条答案
按热度按时间bxgwgixi1#
this discussion中介绍了一种方法,基本上就是将弹出窗口的显示封装在服务中。
1.创建接口
1.创建实现
1.不要忘记在
MauiProgram.cs
中注册它1.将服务注入视图模型并使用它
我们也在努力在Toolkit中添加类似的东西,这样你就不必在你的项目中自己写这些东西了,你可以跟踪here的进度。