Низкая производительность с WPF DataGrid и ScrollViewer

У меня есть этот стиль для сетки данных:


    
        
            
                
                    
                        
                            
                                
                                    
                                    
                                    
                                
                                
                                    
                                    
                                    
                                

                                

                                

                                

                                
                                    
                                        
                                        
                                    

                                    
                                
                            
                        
                    

                    
                        

                        
                    
                
            
        
    

Я знаю, что если вы загрузите много данных в сетке данных, производительность страдает. Я могу использовать виртуализацию, чтобы смягчить это падение производительности, однако, как только я добавляю сетку в пользовательское средство просмотра прокрутки, виртуализация теряется.

Я пытаюсь получить его обратно, но я не уверен, как -- сохраняя при этом элемент с именем Imageв моем XAML.

По сути, я хочу, чтобы изображение прокручивалось с содержимым сетки данных и приведенным выше кодом. работает нормально, вот только не знаю как включить виртуализацию.Возможно ли это вообще?

Обновление:Похоже нашел проблему.Последняя Сеткав шаблоне вызывает проблему:


    

    

Как только я t вытащите Canvasи Grid, оставив только ItemsPresenter, тогда это снова быстро.Как я могу получить его быстро и при этом сохранить этот Canvas?

Обновление 2:Как я могу применить эту (Низкая производительность ScrollViewer с DataGrid) стратегию для моего Grid, показанного выше? Я пробовал так:


    
        
    

    

    

    

Однако теперь полосы прокрутки исчезли?

Я понимаю, что не могу виртуализировать Canvas, да мне и не нужно. На самом деле рисуется весь Canvas, и у меня нет логики, чтобы разделить его на более мелкие части. Совершенно нормально визуализировать изображение целиком, если я могу сохранить виртуализацию строк.

8
задан Community 23 May 2017 в 10:26
поделиться