Tôi gặp sự cố khi bỏ qua ứng dụng trình xem ảnh. Tôi sử dụng ListBox để hiển thị hình ảnh, được chứa trong ObservableCollection. Tôi ràng buộc ItemSource của ListBox với ObservableCollection.Trong Hộp danh sách WPF có hơn 1000 mục hình ảnh, hình thu nhỏ trở nên chậm
<DataTemplate DataType="{x:Type modeldata:ImageInfo}">
<Image
Margin="6"
Source="{Binding Thumbnail}"
Width="{Binding ZoomBarWidth.Width, Source={StaticResource zoombarmanager}}"
Height="{Binding ZoomBarWidth.Width, Source={StaticResource zoombarmanager}}"/>
</DataTemplate>
<Grid DataContext="{StaticResource imageinfolder}">
<ScrollViewer
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled">
<ListBox Name="PhotosListBox"
IsSynchronizedWithCurrentItem="True"
Style="{StaticResource PhotoListBoxStyle}"
Margin="5"
SelectionMode="Extended"
ItemsSource="{Binding}"
/>
</ScrollViewer>
Tôi cũng ràng buộc Image'height trong ListBox bằng thanh trượt. (Giá trị của thanh trượt cũng liên kết với zoombarmanager.ZoomBarWidth.Width). Nhưng tôi thấy nếu bộ sưu tập trở nên lớn hơn, chẳng hạn như: chứa nhiều hơn 1000 hình ảnh, Nếu tôi sử dụng thanh trượt để thay đổi kích thước của iamges, nó sẽ trở thành một chút chậm. Câu hỏi của tôi là. 1. Tại sao nó trở nên Chậm? trở thành nó cố gắng thu phóng mọi hình ảnh, hoặc nó chỉ vì thông báo ("Chiều rộng") được gọi hơn 1000 lần. 2. Có phương pháp nào để giải quyết loại vấn đề này và làm cho nó nhanh hơn không.
Các PhotoListBoxStyle là như thế này:
<Style~~ TargetType="{x:Type ListBox}" x:Key="PhotoListBoxStyle">
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBox}" >
<WrapPanel
Margin="5"
IsItemsHost="True"
Orientation="Horizontal"
VerticalAlignment="Top"
HorizontalAlignment="Stretch" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style~~>
Nhưng Nếu tôi sử dụng Style ở trên, tôi phải sử dụng ScrollViewer ngoài ListBox, nếu không tôi không có ý tưởng làm thế nào để có được một scrollerbar di chuyển mượt mà và wrappanel dường như có không có thanh cuộn mặc định. Bất cứ ai giúp đỡ? Người ta nói listbox với scrollviewer có hiệu suất kém.
Binding Chiều cao của mỗi hình ảnh/Width là khủng khiếp không hiệu quả, chỉ cần sử dụng một LayoutTransform trên ItemsPanel (câu trả lời thêm vào hiệu ứng này) . – user7116