【问题标题】:Xamarin.Forms MVVM - How to send data from an async function to ViewModelXamarin.Forms MVVM - 如何将数据从异步函数发送到 ViewModel
【发布时间】:2021-06-26 17:49:44
【问题描述】:

我在将数据从由按下按钮启动的异步函数发送到页面的 ViewModel 时遇到问题,该视图模型将用于更新它 - 问题是我不知道该怎么做。异步功能完成后发送数据的最佳方式是什么?我刚刚开始学习 Xamarin 和 MVVM,因为我主要是在寻求资源的指针来学习如何去做——我觉得我错过了一些重要的部分。

我尝试过的是 MessagingCenter(在 Model 和 ViewModel 之间似乎不起作用)和 ObservableCollection(这似乎应该是解决方案,但是我真的不知道如何让它在这种情况下工作)。

【问题讨论】:

  • MessagingCenter 在任何地方都可以正常工作。你也可以分享一下你的实现吗?这样如果你错过了什么,有人可能会提供帮助
  • Welp,显然我只是用错了它并且放弃得太快了 - 在订阅和发送中,发件人应该是指定的对象,不是订阅者。谢谢!

标签: c# xamarin xamarin.forms mvvm


【解决方案1】:

我通常让按钮调用命令,而不是尝试让异步函数调用视图模型。命令类似于以下内容:

public partial class MainViewModel 
{
    public MainViewModel ()
    {
        InitializeComponent();

        NavigateCommand = new Command<Type>(
            async (Type pageType) =>
            {
                Page page = (Page)Activator.CreateInstance(pageType);
                await Navigation.PushAsync(page);
            });

        BindingContext = this;
    }

    public ICommand NavigateCommand { private set; get; }
}

然后你会像这样绑定它

<Button Text="TEXT" Command="{Binding NavigateCommand }" />

所有这些都在这里更详细地解释:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/data-binding/commanding

【讨论】:

    猜你喜欢
    • 2017-10-18
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多