2009-05-18 40 views
7

Chúng tôi có một loạt hình chữ nhật được tạo bên trong Canvas và chúng được lồng trong thứ tự này ScrollView> Canvas> VirtualizingStackPanel> Hình chữ nhật trong XAML.WPF Ảo hóa Canvas

Có vẻ như có rất ít thông tin về Microsoft về những gì mà Senarios Virtualization được hỗ trợ và trong trường hợp không có lỗi thì nó chỉ xử lý nó như một StackPanel chuẩn.

Cho rằng chế độ xem của chúng tôi có khoảng 60 hình chữ nhật trên màn hình tại bất kỳ thời điểm nào trong tổng số khoảng 800 trên toàn bộ khung hình, thời gian tải khoảng 5 phút không thể chấp nhận được.

Chúng tôi đã thử xóa ScrollView thành không có hiệu lực (ngoài việc xóa thanh cuộn hiệu suất không cải thiện) và loại bỏ một số yếu tố làm tổ khác, hiệu ứng ròng dường như không có gì được hiển thị hoặc hiển thị nhưng vẫn chậm.

Giải pháp tốt nhất mà tôi đã tìm thấy cho đến nay một mẫu mã miễn phí của VirtualizedCanvas nhưng rất hạn chế và không hỗ trợ bất kỳ thứ gì được lồng bên trong nó, thông tin đầu vào duy nhất cần có là tập hợp các yếu tố giao diện người dùng.

Giải pháp này về cơ bản bỏ qua dữ liệu và yêu cầu bạn chuyển một Canvas đã hoàn thành trở lại nó, điều này làm cho tất cả các mã và trình biến đổi hiện tại của chúng ta trở nên vô dụng và sẽ làm lại.

Có cách nào để chỉ cần cắt Ảo hóa Canvas để chỉ vẽ 60 mục trên màn hình của chúng tôi không?

Trả lời

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