gpt4 book ai didi

mvvmcross - MvvmCross 中的异步初始化和属性更改

转载 作者:行者123 更新时间:2023-12-01 03:53:39 26 4
gpt4 key购买 nike

我在 View 模型中有一些来自 Init 的异步调用。问题是有时异步调用在 OnCreate 之前返回,并且 UI 中的属性没有更新。
当我们必须初始化异步数据时,是否有适合这种情况的异步/等待模型?

伪代码:

    // ViewModel
public async Task Init(string id)
{
Url = await LoadUrlAsync(id);
}


// View
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.ui_xml);
ViewModel.PropertyChanged += ViewModel_PropertyChanged;
}

void ViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
_webView.LoadUrl(ViewModel.Url);
}

最佳答案

我可能会在 OnCreate 中做这样的事情方法,因为您将来可能希望向其添加其他属性。

private bool _loaded;

protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.ui_xml);
ViewModel.WeakSubscribe(() => ViewModel.Url, (s,e) =>
{
if (!_loaded)
_webView.LoadUrl(ViewModel.Url);
});

if (ViewModel.Url != null) //Check if the async Init has finished already
{
_webView.LoadUrl(ViewModel.Url);
_loaded = true;
}
}

关于mvvmcross - MvvmCross 中的异步初始化和属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19408287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com