2016-03-28 15 views
5

Tôi đang tìm một điều khiển wpf (miễn phí hoặc thương mại). Cây nên hỗ trợ tất cả các chế độ xem thường xuyên của cây Đặc điểm (kiểu, mẫu dữ liệu, mẫu điều khiển, ...) và hỗ trợ được sắp xếp với Cột (loại giống như cửa sổ Xem trong Visual Studio).Wpf TreeView có các cột, với Giao diện người dùng ảo và DataVirtualization

Nhưng cũng:

  1. Tốt ảo hóa - nên hỗ trợ hàng ngàn yếu tố
  2. Built-in dữ liệu ảo hóa - Các tải và xử lý các dữ liệu chậm và không thể được thực hiện cùng một lúc và theo thứ tự nhất định (giống như phân trang)
  3. Xem hỗ trợ mẫu và Ràng buộc, tôi muốn điều tra cây bằng cách sử dụng loại mô hình xem thay vì tự điều tra cây
  4. Hỗ trợ cài sẵn cho biển rch và lọc trên biểu diễn dữ liệu và sau đó phản ánh các kết quả khớp trên các thành phần trực quan trên cây
  5. Chính xác, nhanh chóng di chuyển và tùy chọn di chuyển đến phần tử cụ thể (Tôi thích sử dụng biểu diễn ViewModel của mục).

I không muốn tự mình tạo để tự xây dựng cây, tôi đang tìm kiếm triển khai hiện tại với ít nhất là hỗ trợ ảo hóa và ảo hóa dữ liệu.

Trả lời

2

Ví dụ tốt nhất mà tôi từng thấy là TreeView by Josh Smith. Nó sử dụng tải theo yêu cầu và có tìm kiếm văn bản.

Để đưa DataVirtualization bạn nên sử dụng:

<TreeView 
    VirtualizingStackPanel.IsVirtualizing = "True" 
    VirtualizingStackPanel.VirtualizationMode = "Recycling" /> 

Nhưng hãy cẩn thận, Virtualizationchỉ hoạt động khi các TreeView đang sử dụng Bindingkhông khi các nút được tạo ra từng người một trong các mã như trong ví dụ sau:

TreeViewItem rootItem = new TreeViewItem() { Header = "Item Level 0" }; 

for (int i = 0; i < 1000; i++) 
{ 
    TreeViewItem itemLevel1 = new TreeViewItem() { Header = "Item Level 1" }; 
    itemLevel1.Items.Add(new TreeViewItem()); 
    rootItem.Items.Add(itemLevel1); 
} 

Cập nhật:

Bạn có thể sử dụng điều khiển the DevExpress TreeList. Đây là bản dùng thử miễn phí.

Hoặc điều khiển Telerik's TreeView. Đó là bản dùng thử miễn phí 30 ngày. Xem bản trình diễn của họ và thậm chí bạn có thể tải xuống và dùng thử.

Update1:

Nếu bạn có bất kỳ nghi ngờ về hiệu suất TreeView by Josh Smith, sau đó tôi có thể nói về experince của tôi:

  • Tôi có 500 nút và thời gian để tải các mặt hàng này là 0.0003982 giây
  • Tôi có thể cuộn lên và cuộn xuống và không có bất kỳ giao diện người dùng đóng băng (hoàn hảo Ảo hóa dữ liệu)
  • nút lồng nhau được một cách hoàn hảo mở như Josh Smith sử dụng Lazy Loading
  • Tất cả các nút có thể có mẫu . Vì vậy, bạn có thể đặt bất kỳ hình ảnh hoặc thiết kế nào bạn muốn
  • Điều này TreeView không vi phạm nghiêm trọng các quy tắc MVVM, khiến quy tắc sử dụng viewModels cho TreeViewItems. Điều đó có nghĩa là bạn sẽ không gặp lỗi lạ hoặc ngoại lệ nếu bạn có TreeViewITem trong số viewModel của mình. Ví dụ: this error.

Để kết luận, tôi muốn nói rằng tôi thực sự vui vì tôi đã chọn TreeView by JoshSmith trong ứng dụng sản xuất của mình vì nó thực sự đơn giản để hỗ trợ và chỉnh sửa nó. Nó có hiệu suất thực sự tuyệt vời.

Ảnh của TreeView tôi:

enter image description here

+0

@EliMagan bạn nói đúng. Xin hãy đọc kỹ câu trả lời của tôi. Tôi đã viết: ** không phải khi các nút được tạo ra từng cái một trong mã như trong ví dụ sau ** – StepUp

+0

cảm ơn, Nhưng tôi cần một ảo hóa trên tất cả các cây không chỉ cho mỗi cấp độ của phần tử (như triển khai TreeView). Và tôi cũng cần một ảo hóa dữ liệu (nếu có thể, một hỗ trợ được tích hợp sẵn) vì tôi cần nạp một khối khác nhau của cây mỗi lần –

+0

@EliDagan Những hàng này VirtualizingStackPanel.IsVirtualizing = "True" VirtualizingStackPanel.VirtualizationMode = "Recycling" dành cho DataVirtualization cho toàn bộ cây, vì vậy * mỗi cấp độ của phần tử * được bao gồm :). Ngoài ra, TreeView của Josh Smith có TextSearch. Đó là tất cả những gì bạn muốn. – StepUp

3

Việc kiểm soát tốt nhất mà tôi biết ai có thể nộp đơn yêu cầu của bạn là Telerik RadTreeView. Hãy xem demo. Ưu điểm:

Các RadTreeView API hỗ trợ giao diện người dùng ảo hóa, mà chỉ xử lý thông tin nạp trong khu vực có thể xem được, làm giảm bộ nhớ của ứng dụng và tăng tốc thời gian tải do đó nâng cao thêm hiệu suất UI

Hiệu suất của Điều khiển Telerik RadTreeView khi hoạt động với số lượng lớn các mục được tối ưu hóa đáng kể thông qua tính năng tải theo yêu cầu của nó. Cơ chế này cho phép các nút tải các nút con của họ khi người dùng mở rộng phụ huynh bằng cách nhấp vào biểu tượng “+”

RadTreeView là một điều khiển theo hướng dữ liệu, được thiết kế để hiển thị lượng lớn dữ liệu phân cấp và không cung cấp tìm kiếm , lọc và sắp xếp chức năng ra khỏi hộp. Do đó, các hoạt động như vậy nên được thực hiện trên dữ liệu mà nó đại diện. Example

+0

cảm ơn câu trả lời của bạn hy vọng sẽ tìm thấy một điều khiển với sự hỗ trợ tích hợp cho ảo hóa dữ liệu. (Tôi muốn có một số loại hành vi phân trang) mọi thứ như: "http://www.devzest.com/blog/post/WPF-Data-Virtualization.aspx" nhưng, như một cái cây –

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