mvvmcross - 在关闭 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。
请指教!谢谢你。
解决方案
最后,我决定不归还我的模型。我没有返回,而是选择了一个唯一的文件名来保存签名。
推荐阅读
- python - 如何让 pyopengl 在我的 IDE 中工作?
- python - 如何直接从 XBee iolines 获取数据
- javascript - 石头剪刀布游戏 - userChoice 未定义,但它已定义...我想?
- c# - 如何修复健康栏
- opencv - 如何将opencv Mat矩阵保存到可以在Matlab中加载的文件中
- javascript - 仅使用 javascript 的 CORS
- jsp - 在 jsp 中使用 jstl 仅显示最后一条记录的列表
- java - 找到一个图,它有 6 个顶点,每个顶点都是边的结束或开始,代码返回数字 2
- nativescript-angular - 将查询与名称的第一个字母匹配
- php - MySQL不允许我删除记录