首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在双向绑定组合框(WPF)上调用异步操作

如何在双向绑定组合框(WPF)上调用异步操作
EN

Stack Overflow用户
提问于 2018-01-24 21:32:57
回答 2查看 861关注 0票数 4

当从双向绑定控件(如combobox (wpf数据绑定))中选择一个项时,处理运行异步操作的适当方式是什么?

当我有一个双向绑定属性(例如ComboBox上的SelectedValue )时,我不认为我可以使用Stephen Cleary's NotifyTaskCompletion,因为当用户从下拉列表中选择一个值时,ComboBox本身将需要修改绑定结果属性,这是任务的结果。

我想出的唯一可行的解决方案是在不等待结果的情况下从数据绑定设置器调用异步任务-method。只要async-method触发与ui相关的任何东西的属性更改事件,并且任何异常都会被拾取并相应地传播到ui,就应该没问题,对吧?

我假设这将是异步WPF应用程序中的常见情况。你们是怎么解决这个问题的?

到目前为止我的解决方案是:

<ComboBox 
        ItemsSource="{Binding PossibleItems}"
        DisplayMemberPath="Name"
        SelectedValue="{Binding SelectedItem}"/>

..。

public Item SelectedItem
{
    get { return m_selectedItem; }
    set
    {
        m_selectedItem = value;
        OnPropertyChanged();

        InitializeAsyncAndFirePropertyChanged();   // async Task method not awaited - gives compiler warning CS4014
    }
}

public async Task InitializeAsyncAndFirePropertyChanged(ObservableCollection<RFEnvironment> possibleRfEnvironments)
{
    //should check this method for exceptions and propagate them to the UI via databinding
    OtherDataBoundProperty = await GetSomeStringFromWebAsync(); 
}

public string OtherDataBoundProperty
{
    get { return m_otherDataBoundProperty; }
    set
    {
        m_otherDataBoundProperty = value;
        OnPropertyChanged();
    }
}

注意:我发现了类似的问题,但没有一个涉及控件上的双向绑定,例如组合框。

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

https://stackoverflow.com/questions/48423750

复制
相关文章

相似问题

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