Tôi đang tạo trình phát đa phương tiện, bây giờ .. Tôi đã thêm chức năng tìm kiếm thời gian thực để tìm kiếm các bài hát v.v. (Một số điều như tìm kiếm thời gian thực WMP) tức là khi bạn nhập từ khóa tìm kiếm xảy ra.Kiểm soát WPF trên Chủ đề giao diện người dùng riêng biệt?
Trong quá trình tìm kiếm, truy cập cơ sở dữ liệu và tải một IEnumerable được thực hiện trên một luồng khác thông qua BackGroundProcess. Giao diện người dùng được cập nhật bằng cách gọi một điều phối viên của một UIElement.
Quá trình này khá nhanh, tuy nhiên khi bạn nhập từ khóa tìm kiếm vào hộp văn bản, có vẻ như có độ trễ nhỏ, điều này là do việc cập nhật Listbox.ItemSource mất một thời gian. có nghĩa là bạn muốn tìm kiếm "Adele", khi bạn nhập "a", chức năng tìm kiếm sẽ tải kết quả cho "A", nhưng khi chúng tôi nhập toàn bộ từ "Adele", một thời gian để hiển thị " d "" e "" l "" e "và có độ trễ nhỏ giữa các chữ cái này.
Trong quá trình tìm kiếm này, khi tôi ngừng cập nhật giao diện người dùng, quá trình tìm kiếm có vẻ rất trơn tru, điều này chỉ có nghĩa là Listbox đang khóa luồng, vì vậy phần còn lại của giao diện người dùng bị kẹt ở đó. được thực hiện với quá trình xử lý của nó. Vì vậy, tôi tin rằng nếu tôi có thể đặt Điều khiển Listbox đến một chuỗi giao diện người dùng khác, tôi có thể duy trì luồng chảy mượt mà của trình phát không phụ thuộc vào thời gian thực hiện để tải Hộp danh sách. FYI: Data Virutualization là có & ListBox có UI Virtualization đang hoạt động
Làm cách nào để đặt điều khiển ListBox vào một Chủ đề giao diện người dùng khác? WPF, C#
Cảm ơn trước :)
Có hiệu quả bạn không thể ... ít nhất là không có cách nào khả thi mà tôi đã thấy. – Servy
Sử dụng .net 4.5?có một tài sản Delay tốt đẹp trên bindings bây giờ có thể là một chiến thắng dễ dàng cho bạn ở đây, về cơ bản thiết lập nó thành một cái gì đó như 100ms và nó sẽ chỉ cập nhật bindings nếu người dùng ngừng gõ cho khoảng thời gian đó (hoặc nhấn enter hoặc textbox mất tiêu điểm) – Andy
Có một và chỉ một chủ đề giao diện người dùng. –