【发布时间】:2020-09-28 11:24:05
【问题描述】:
我使用 Xamarin Prism 设计了我的应用程序。 我有一个命令,当用户导航到这个给定页面时应该执行该命令。 它在不同的项目中运行,但是当我重写相同的代码时,它不会运行。 我比较了代码,几乎相同。但是,它仍然不会在这段代码中运行。
首先我定义了命令:
public IAsyncCommand InitCommand { get; }
在我的视图模型构造函数中,我有这段代码:
InitCommand = new AsyncCommand(InitAsync);
这是我的 InitAsync 方法:
private async Task InitAsync()
{
await GetTransactionsByWallet(WalletId).ConfigureAwait(false); ;
}
在我的 OnNavigatedTo 棱镜部分,我有这个代码:
public void OnNavigatedTo(INavigationParameters parameters)
{
WalletId = parameters.GetValue<IWallets>("wallet").Id;
InitCommand.ExecuteAsync();
}
注意:
InitCommand.ExecuteAsync(); 即使我停下来调试它也不会执行,调试器也不会停止它。
我使用 AsyncAwaitBestPractices.MVVM 来创建命令。
【问题讨论】:
-
debugger also wont stop to it表示在导航页面时不会调用 OnNavigatedTo。 -
@JackHua-MSFT 这一行 WalletId = parameters.GetValue
("wallet").Id;正常执行..但这不会执行之后的行 -
如果你删除
WalletId = parameters.GetValue<IWallets>("wallet").Id;会执行吗?如果是这样,WalletId = parameters.GetValue<IWallets>("wallet").Id;阻止了该方法。 -
@JackHua-MSFT 是的,它阻止了我评论它!如何解决?
-
我不使用棱镜,不知道您是否正确使用它。 Here 是我搜索的文档,和你的不一样。