2017-11-23 65 views
6

Sau this questionthis question, bây giờ tôi có một TreeView với phân cấp dữ liệu như hình dưới đây:Ảo TreeView - hành vi không ổn định trong khi di chuyển

enter image description here

Do số lượng lớn dữ liệu, tôi đã quay Virtualization bất động sản của số TreeView trên (VirtualizingPanel.IsVirtualizing="True").

Bây giờ vấn đề là: việc cuộn cây rất không ổn định. Tôi cố gắng giải thích các hành vi không thể giải thích:

  • Trong khi di chuyển, các mục được chỉ biến mất/dỡ. Với WPF Inspector, tôi thực sự thấy, rằng chúng liên tục được tải xuống và tải lại.
  • Trong khi di chuyển qua các mục của level3, cây không tải các mục vẫn chưa được tải (như mong đợi), nhưng mục level2 tiếp theo sẽ nhảy lên, trên đầu các mức hiển thị 3 mục.

Ghi chú:

  • cuộn làm việc bình thường, khi tất cả các mục level2 đang sụp đổ.
  • Tắt ảo hóa sẽ giải quyết được vấn đề di chuyển (nhưng tất nhiên tôi đang tải sự cố trong trường hợp này)
  • Tôi đã đọc here, lỗi này được sửa trong .Net 4.5.2. Tôi thậm chí đã thử .Net 4.7.1. Hành vi vẫn như cũ.

Có cách nào để tôi có thể tránh hành vi này không?

+0

Tôi không chắc mình hiểu triệu chứng là gì. Bạn đang nói một mục cấp 2 được xếp chồng lên các mục cấp 3 - được vẽ ở cùng một chỗ? –

+0

Có vẻ như bạn đã phát hiện thấy một lỗi có các triệu chứng tương tự, nhưng nguyên nhân gốc rễ khác, so với lỗi 4.5.2 bạn đã trích dẫn. Hãy mở một lỗi tại http://connect.microsoft.com và đính kèm một repro (hoặc chia sẻ một repro với tôi). Hành vi có thể phụ thuộc vào các mẫu và kiểu cho TreeView của bạn và các mục của nó, mà bạn chưa hiển thị ở đây. Gần đây chúng tôi đã sửa (cho 4.7.2) một tập hợp các vấn đề phát sinh khi bạn tạo hiệu ứng mở rộng/sụp đổ của TreeViewItem, nhưng các triệu chứng khác nhau - không có hiển thị chồng. –

Trả lời

0

Bạn đã cố gắng đặt ScrollUnit trên VirtualizingPanel thành Pixel-Scrolling chưa? Điều này đã giúp tôi với một hành vi scolling lạ trên ListViews khi IsVirtualizing và IsVirtualizingWhenGrouping được đặt thành true:

VirtualizingPanel.IsVirtualizing='True' 
VirtualizingPanel.IsVirtualizingWhenGrouping='True' 
VirtualizingPanel.ScrollUnit='Pixel' 
+0

Có, tôi đã thử nó, nhưng nó không giúp được gì. Nó thực sự đã được đặt thành 'Pixel'. Vấn đề là với ảo hóa chính nó. – Yvonnila

Các vấn đề liên quan