【问题标题】:Implementing acr.UserDialogs in Xamarin.Forms with mvvmlight使用 mvvmlight 在 Xamarin.Forms 中实现 acr.UserDialogs
【发布时间】:2020-05-04 02:51:11
【问题描述】:

对于学校,我们正在使用 Xamarin Forms 开发移动应用程序。 我们在项目中使用 mvvmlight。

现在我正在四处寻找如何显示对话框、警报等,并偶然发现了acr.UserDialogs,它拥有我们需要的一切。

我添加了 UserDialogs.Init(this); 到我的 MainActivity.cs

当我尝试在我的 ViewModelLocator 中注册它时:

SimpleIoc.Default.Register<IUserDialogs, UserDialogs>();

这不起作用,因为 UserDialogs 是静态类型。

我发现了一个类似的问题Here 这给出了以下建议

SimpleIoc.Default.Register<IUserDialogs>(UserDialogs.Instance);

但这也不起作用。

还有其他建议吗?

谢谢

【问题讨论】:

    标签: c# mvvm xamarin.forms mvvm-light


    【解决方案1】:

    试试这个方法。我刚刚在我的环境中进行了测试,它对我来说很好。

    把它放在你的 MainActivity 中

    Acr.UserDialogs.UserDialogs.Init(this);
    

    并在视图模型中将对话框与命令绑定

    private RelayCommand _yourCommand;
    
    public RelayCommand YourCommand{
       get{
           return _yourCommand
              ?? (_yourCommand = new RelayCommand( async () => {
                  UserDialogs.Instance.ShowLoading("TEST");
              }
       }
    }
    

    我没有在 ViewModelLocator 中注册 arc.UserDialog,而是注册了“IDialogService”

    public ViewModelLocator()
    {
       ...
       SimpleIoc.Default.Register<IDialogService, DialogService>();
       ...
    }
    

    还有我的 ViewModel

    public class MyViewModel : ViewModelBase
    {
       ...
       private IDialogService _dialogService;
       ...
       //ViewModel Constructor
       public SignUpViewModel(INavigationService navigationService, IDialogService dialogService){
           _dialogService = dialogService;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-01
      • 2023-04-08
      • 2018-08-03
      • 2023-03-18
      • 2018-09-04
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 2015-12-16
      相关资源
      最近更新 更多