aşağıdaki XAML düşünün değiştirir:WPF ComboBox sıfırlar madde kaynaklı
<ComboBox Name="CompanyComboBox"
HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=GlobalData.Companies}"
SelectedValuePath="Id"
SelectedValue="{Binding Customer.CompanyId, ValidatesOnDataErrors=True}"
DisplayMemberPath="Name" />
GlobalData.Companies
şirketlerinin bir koleksiyon (IEnumerable<Company>
) 'dir; Bu koleksiyon arka plan üzerinde yeniden yüklenebilir (bir web servisinden indirilir). Bu olduğunda, ComboBox doğru olarak öğeleri bağlayıcı yoluyla yeniden yükler. Ancak bir yan etki olarak, seçilen öğeyi de sıfırlar!
Combo-box kaynaklarını denetlemek için Reflector'ı kullandım ve görünüşe göre bu amaçlanan bir davranıştır.
Bunun için nasıl "güzel" bir yol var? Kazanmak istediğim şey, eğer kullanıcı "A Şirketi" ni seçerse ve daha sonra şirketlerin listesini yeniden yüklerse, "A Şirketi" nin (yeni listede olduğu varsayılarak) seçildiği durumdur. Bir "güzel" yolu ise
Bu, aşağıdaki gibi güzel/kolay olmamakla birlikte çözüm olabilir: - | –
Koleksiyonun arka plan iş parçacığından güncellenmesi gerekmeyebilir. Geçerli koleksiyonu web hizmetinden arka planda alın ve sonra (bir BackgroundWorker kullandığınızı varsayarak), RunWorkerCompleted olayındaki 'ObservableCollection' güncelleştirin. –