首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绑定Picker异步?

如何绑定Picker异步?
EN

Stack Overflow用户
提问于 2019-08-07 07:17:54
回答 1查看 350关注 0票数 0

我正在通过httpClient将一些值加载到列表中。现在我想把这个列表绑定到一个Picker上。但那人是空的。

我有一个课程“贸易”与不同的项目,如标题。

ViewModel (FirmsViewModel)有以下代码:

代码语言:javascript
复制
 public async Task GetTradesData()
        {
            var tradeList = await App.RestService.GetTradesAsync(true);

            Trades = new ObservableCollection<Trade>(tradeList);
        }

“交易”清单已填写完毕。直到这一点,它似乎是有效的。

在我的Page.cs文件中,我有以下代码:

代码语言:javascript
复制
public FirmsPage()
        {
            InitializeComponent();

            viewModel = new FirmsViewModel();
            BindingContext = viewModel;
        }

protected async override void OnAppearing()
        {
            base.OnAppearing();

            await viewModel.GetTradesData();
        }

采摘者的XAML:

代码语言:javascript
复制
 <Picker SelectedIndex="{Binding TradesSelectedIndex, Mode=TwoWay}"
                ItemsSource="{Binding Trades}"
                ItemDisplayBinding="{Binding title}"
                Margin="0,15,0,0"
                Title="Select a Trade">
</Picker>

如果您正在运行代码,则选择程序始终是空的。有什么建议吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-07 07:37:04

这应该是直接的:

  1. 确保在设置PropertyChanged属性后触发Trades事件
  2. 确保在UI线程上触发此事件

因此,如果假设您的Trades声明如下所示:

代码语言:javascript
复制
public ObservableCollection<Trade> Trades { get; private set; }

你可以直接打电话。RaisePropertyChanged("Trades"); (或在您的ViewModel类型中的任何等效值)在GetTradesData()中赋值之后

或者,您可以更改您的财产声明:

代码语言:javascript
复制
private ObservableCollection<Trade> _trades;
public ObservableCollection<Trade> Trades
{
    get => _trades;
    set
    {
        _trades = value;
        RaisePropertyChanged("Trades");
    }
}

或者我个人更希望的是,从一开始就简单地初始化ObservableCollection,然后简单地在GetTradesData()中将项添加到其中。

代码语言:javascript
复制
public ObservableCollection<Trade> Trades { get; } = new ObservableCollection<Trade>();

GetTradesData()

代码语言:javascript
复制
foreach (var trade in tradeList)
    Trades.Add(trade);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57388915

复制
相关文章

相似问题

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