Тормоза combobox при наличии >8000 элементов

Здравствуйте.

Нужно отобразить большое количество элементов комбобокса.
По советам гугла сделал виртуализацию:

<ComboBox x:Name="IllCombo" IsEditable="True" ItemsSource="{Binding IllSource}"  
                                          SelectedItem="{Binding SelectedIll}" ItemTemplate="{StaticResource ComboboxItemTemplate}">
                                    <ComboBox.ItemsPanel>
                                        <ItemsPanelTemplate>
                                            <VirtualizingStackPanel VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"/>
                                        </ItemsPanelTemplate>
                                    </ComboBox.ItemsPanel>
                                </ComboBox>

Но это вообще никаким образом не влияет на работу. Как тормозило так и тормозит. (((

Что я не так сделал то?? И может быть есть какой нибудь способ добиться скорострельности с подстановкой вариантов каким нибудь другим образом??

Тут пишут из-за чего могут быть проблемы с виртуализацией: wpf - Why ComboBox be dropdown result whole app performance to very slow? - Stack Overflow

Но я б наверно думал в сторону того, чтоб отображать только после фильтрации.

image

Все равно ж никто не будет искать вручную среди тысяч.

Что вы имеете в виду??
Фильтрация то есть но надо ввести пару символов но и сам фильтр занимает тучу времени … Ну … может не тучу но для пользователя невероятно заметно …

Привязка к списку идет на стадии загрузки … иначе говорят виртуализация не будет работать …

Можно попробовать как-нибудь ускорить.
High performance "contains" search in list of strings in C# - Stack Overflow

у меня фильтрация вот по такому принципу сделана
https://docs.microsoft.com/ru-ru/dotnet/desktop/wpf/data/how-to-filter-data-in-a-view?view=netframeworkdesktop-4.8

Действительно вот эта штука помогла:

<Popup VerticalOffset="-1" SnapsToDevicePixels="True" Name="Popup" Placement="Bottom" IsOpen="{TemplateBinding IsDropDownOpen}" AllowsTransparency="True" Focusable="False" PopupAnimation="Fade">
                                <Grid Name="DropDown" SnapsToDevicePixels="True" Width="{TemplateBinding ActualWidth}" MaxHeight="600">
                                    <Border x:Name="DropDownBorder" Style="{DynamicResource ComboBoxControlStyle}"/>
                                    <ScrollViewer x:Name="ScrollPopup" SnapsToDevicePixels="True" >
                                        <VirtualizingStackPanel VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling" IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained" />
                                    </ScrollViewer>
                                </Grid>
                            </Popup>
<ControlTemplate.Triggers>
         
          <Trigger Property="IsEnabled" Value="false">
            <Setter Property="Foreground" Value="#888888"/>
          </Trigger>
          <!-- remove this trigger, because the virtualization is broken!!!
          <Trigger Property="IsGrouping" Value="true">
            <Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
          </Trigger>
          -->                
          <Trigger SourceName="Popup" Property="Popup.AllowsTransparency" Value="true">
            <Setter TargetName="DropDownBorder" Property="CornerRadius" Value="4"/>
            <Setter TargetName="DropDownBorder" Property="Margin" Value="0,2,0,0"/>
          </Trigger>
          
        </ControlTemplate.Triggers>

И сортировка и отображение стало нормальным как и раньше