首页 > 解决方案 > 在关闭 xamarin 视图时,我收到错误:当它也是当前显示的页面时,无法删除根页面

问题描述

我有一个 Xamarin.Forms 应用程序并在其中使用 MVVMCross。当我尝试关闭视图并返回一个值时,我收到错误:当它也是当前显示的页面时,无法删除根页面。

不知道我做错了什么。

这是我要关闭的 Step6SignatureViewModel:

    public class Step6SignatureViewModel : MvxViewModel, IMvxViewModel<string, string>
    {
        private readonly IMvxNavigationService _mvxNavigationService;

        public Step6SignatureViewModel(IMvxNavigationService mvxNavigationService)
        {
            _mvxNavigationService = mvxNavigationService ?? throw new ArgumentNullException(nameof(mvxNavigationService));
            CloseCommand = new MvxAsyncCommand(CloseView);
        }

        public void Prepare(string parameter)
        {
        }

        public IMvxAsyncCommand CloseCommand { get; set; }
        public TaskCompletionSource<object> CloseCompletionSource { get; set; }

        public async Task CloseView() {
            await _mvxNavigationService.Close(this, "filewithsignature.jpg");
        }
    }

这是从下划线视图模型打开 Step6SignaturePage 的命令:

...
public IMvxAsyncCommand<string> SignCommand
        {
            get
            {
                return new MvxAsyncCommand<string>(async (_) =>
                {
                    var model = await _mvxNavigationService.Navigate<Step6SignatureViewModel, string, string>(string.Empty);
                });
            }
        }
...

这是“Step6SignatureViewModel”的页面:

    [XamlCompilation(XamlCompilationOptions.Compile)]
    [MvxContentPagePresentation(WrapInNavigationPage = true, NoHistory = true)]
    public partial class Step6SignaturePage : MvxContentPage<Step6SignatureViewModel>
    {
        public Step6SignaturePage()
        {
            InitializeComponent();
        }
    }

当我设置 WrapInNavigationPage = false 时,我没有收到错误并返回结果,但它不会关闭 Step6SignaturePage。

请指教!谢谢你。

标签: mvvmcross

解决方案


最后,我决定不归还我的模型。我没有返回,而是选择了一个唯一的文件名来保存签名。


推荐阅读