首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Prism Xamarin OnNavigatedTo不会执行函数

Prism Xamarin OnNavigatedTo不会执行函数
EN

Stack Overflow用户
提问于 2020-09-28 19:24:06
回答 1查看 94关注 0票数 0

我使用Xamarin Prism设计了我的应用程序。当用户导航到这个给定页面时,我有一个应该执行的命令。它在不同的项目中运行,但当我重写相同的代码时,它将不会运行。我比较了代码,几乎是一样的。但是,它仍然不能在此代码中运行。

首先,我定义了命令:

代码语言:javascript
运行
复制
public IAsyncCommand InitCommand { get; }

在我的视图模型构造函数中,我有这样的代码:

代码语言:javascript
运行
复制
InitCommand = new AsyncCommand(InitAsync);

这是我的InitAsync方法:

代码语言:javascript
运行
复制
private async Task InitAsync()
{

    await GetTransactionsByWallet(WalletId).ConfigureAwait(false); ;

}

在我的棱镜的OnNavigatedTo部分,我有这样的代码:

代码语言:javascript
运行
复制
public void OnNavigatedTo(INavigationParameters parameters)
{
    WalletId = parameters.GetValue<IWallets>("wallet").Id;
    InitCommand.ExecuteAsync();
}

注意:即使我停止调试InitCommand.ExecuteAsync();,它也不会执行,调试器也不会停止它。

我使用AsyncAwaitBestPractices.MVVM来创建命令。

EN

回答 1

Stack Overflow用户

发布于 2020-10-06 15:30:37

您决定运行命令而不是直接运行方法的原因是什么?也就是说,为什么不仅仅是await InitAsync(),而不是InitCommand.ExecuteAsync();

注意:您可以将OnNavigatedTo设置为异步方法。由于它是eventhandler (在导航过程中触发的事件),因此允许异步void - https://docs.microsoft.com/en-us/archive/msdn-magazine/2013/march/async-await-best-practices-in-asynchronous-programming

这里-布莱恩·拉古纳斯提到的https://forums.xamarin.com/discussion/91897/prism-calling-async-method-in-onnavigatedto-or-any-of-the-methods-from-inavigationaware (棱镜库的经理)

但是如果这个选项听起来不太好--另一个选择是在视图的“已加载”事件期间运行该方法。这些不是变通方法,而是正确的mvvm方法。要在loaded上运行该方法,您有两种方法:

(1)使用Xaml行为库的CallMethodAction或(2)使用Prism内置的InvokeCommandAction和XAML的交互性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64101261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档