Tôi đang phát triển một ứng dụng mã nguồn mở có tên là Media Assistant. Tôi đã sử dụng một ListBox để hiển thị thư viện. ItemsSource bị ràng buộc vào một danh sách của LibraryItem. Đây là XALM.Hộp danh sách WPF cuộn lên trên cùng khi tôi thay đổi thông báo trạng thái hoặc hiển thị màn hình chờ
<ListBox Name="Tree" DockPanel.Dock="Top"
ItemsSource="{Binding DataSource.OrderedLibraryItems}"
Background="{StaticResource LibraryBackground}"
Width="220" HorizontalAlignment="Left"
BorderThickness="0"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode="Standard"
ScrollViewer.IsDeferredScrollingEnabled="True"
ItemTemplate="{StaticResource ListLibraryItemTemplate}"
SelectionMode="Single"
MouseDoubleClick="HandleMouseDoubleClick"
/>
Vấn đề là khi tôi hiển thị bất kỳ thông báo trạng thái nào ở cuối cửa sổ của mình từ chuỗi bằng cách sử dụng Bộ điều phối.
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background,new ParameterizedThreadStart(action), state);
Hộp danh sách cuộn lên trên cùng. Nếu tôi không hiển thị bất kỳ thông điệp trạng thái nào thì nó hoạt động tốt. Văn bản dữ liệu hoặc các mục danh sách hoặc tiêu điểm không bị thay đổi. Tôi không thể tìm thấy bất kỳ lý do gì tại sao nó lại làm điều đó. Nó xảy ra khi tôi hiển thị bất kỳ màn hình chờ đợi nào là một cửa sổ không theo phương thức. Tôi không thể tái tạo nó trong một dự án khác. Here là mã nguồn của Trợ lý phương tiện. Bạn có thể dễ dàng tạo lại nó bằng cách bỏ chú thích câu lệnh trả về của phương thức SetStatusMessage tại lớp BackgroundScanner.
Tôi có một cái gì đó tương tự và tất cả tôi có thể hình dung là giao diện người dùng muốn chọn mục theo quan điểm. Nếu chỉ số là -1 thì nó đã cố gắng hiển thị 0. Tôi đã không sử dụng một thông điệp Dispatcher nhưng nếu tôi đặt TextBlock trên ListBox tôi đã có may mắn hơn nhưng không bao giờ có nó làm việc tất cả các cách. Với một ListView tôi có hành vi tốt hơn. ListBox là nhanh và tôi sill như nó nhưng là một số công cụ tôi đã không tìm ra. Nếu không có cuộn trả chậm, bạn có nhận được cùng một hành vi không? Nếu chế độ ràng buộc của bạn là oneway thì hãy khai báo nó. – Paparazzi