Mir*_*toš 6 wpf combobox selecteditem
考虑以下XAML:
<ComboBox Name="CompanyComboBox" 
    HorizontalAlignment="Stretch"
    ItemsSource="{Binding Path=GlobalData.Companies}" 
    SelectedValuePath="Id"
    SelectedValue="{Binding Customer.CompanyId, ValidatesOnDataErrors=True}"
    DisplayMemberPath="Name" />
GlobalData.Companies是公司的集合(IEnumerable<Company>); 此集合可以在后台重新加载(从Web服务下载).发生这种情况时,ComboBox会通过绑定正确地重新加载项目.但是作为副作用,它还会重置所选项目!
我使用Reflector检查组合框源,显然这是预期的行为.
有什么"好"的方式如何解决这个问题?我想要实现的是,如果用户选择"公司A"并在之后重新加载公司列表,则"公司A"保持选中状态(假设它在新列表中).
也许你可以使用ObservableCollection<Company>而不是你的IEnumerable<Company>? 然后,在背景更改时,您只能添加/删除新列表中新的/不存在的项目,所选项目应保留,除非它被更改删除。
您可以通过一个小的 hack-around 在单独的线程中更新您的可观察集合。