У меня проблема с производительностью, которую я только что решил, но я действительно не понимаю, почему решение работает.Странная проблема с производительностью с привязкой WPF ComboBox
У меня есть ComboBox, содержащий около 4000 элементов, которые я связываю с коллекцией, используя свойство ItemSource; если я привяжусь к свойству в модели вида с помощью getter и setter, все работает нормально, но если я привяжусь к свойству только с помощью getter, то в первый раз, когда я нажимаю на combobox, он отлично работает, но каждый раз после первого время, если я нажимаю на выпадающий список приложение висит около 1 минуты с CPU для процесса при ~ 100% перед отображением вещей поле со списком
вид:
...
<ComboBox
Grid.Column="1"
ItemsSource="{Binding AvailableDispositionCodes}"
DisplayMemberPath="DisplayName"
SelectedItem="{Binding SelectedDispositionCode}"
Width="Auto"
Height="25"
Margin="5 0 0 0">
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
</ComboBox>
...
Работа вид-модель:
...
private IEnumerable<DispositionCodeViewModel> availableDispositionCodes = new List<DispositionCodeViewModel>();
...
public IEnumerable<DispositionCodeViewModel> AvailableDispositionCodes
{
get
{
return this.availableDispositionCodes;
}
set
{
this.availableDispositionCodes = value;
this.OnPropertyChanged();
}
}
...
public void Initialize()
{
...
this.AvailableDispositionCodes = resultCodeViewModels.OrderBy(x => x.Name);
...
}
...
View-model, который вызывает применение га нг:
...
private List<DispositionCodeViewModel> availableDispositionCodes = new List<DispositionCodeViewModel>();
...
public IEnumerable<DispositionCodeViewModel> AvailableDispositionCodes
{
get { return this.availableDispositionCodes; }
}
...
public void Initialize()
{
...
this.availableDispositionCodes.AddRange(resultCodeViewModels.OrderBy(x => x.Name));
this.OnPropertyChanged(nameof(this.AvailableDispositionCodes));
...
}
...
Метод Initialize из вида-модели инициализирует коллекцию, которая переплетена в выпадающий список, и этот метод вызывается только один раз вскоре после того, как вид и вид-модель создаются. После этого коллекция не изменяется
Знает ли кто-нибудь, что вызывает это странное поведение?