tôi có câu hỏi về cách bố trí với một listview bên trong một trình xem ảnh. Khi listview nằm bên trong một scrollviewer nó sử dụng kích thước tối đa của nó và không di chuyển chính nó gây ra scrollviewer cung cấp không giới hạn số lượng không gian cho các điều khiển bên trong của nó. Vấn đề là, các điều khiển dưới một danh sách dài chỉ hiển thị nếu người dùng cuộn xuống và tôi muốn làm cho listview chỉ sử dụng không gian cần thiết và sử dụng thanh cuộn. Hình ảnh làm cho biết thêm thông tin hơn từ (liên kết cho hình ảnh cũng làm cho nhiều như danh tiếng của tôi không phải là 10 chưa. Edit2: tôi cũng có thể sử dụng chỉ một liên kết vì vậy tôi sao chép tất cả hình ảnh vào một). không Nếu bảng kê được lâu mọi thứ đều ổn:WPF: ListView bên trong Scrollviewer; Câu hỏi bố cục
Hình 1:
Bây giờ nếu danh sách dài các điều khiển bên dưới di chuyển xuống đất vô hình:
Ảnh 2: xem liên kết từ hình ảnh 1
Những gì tôi muốn xảy ra bây giờ là thế này:
hình 3: xem liên kết từ hình ảnh 1
Điều đó không thực sự là một vấn đề khiến chúng ta có thể đặt mọi thứ vào một dockpanal và làm dock các điều khiển dưới đây để Dock.Below và Top to Top và để listview điền vào trung tâm với "lastchildfill". Bây giờ cho vấn đề thực sự. Điều gì sẽ xảy ra nếu cửa sổ nhỏ hơn? Sau đó, lúc đầu listview biến mất và sau đó cũng tất cả mọi thứ khác mà không có một thanh cuộn để di chuyển đến các điều khiển ở phía dưới.
Hình 4: xem liên kết từ hình ảnh 1
Các giải pháp lý tưởng tôi đang tìm kiếm là phải có thanh cuộn trên cửa sổ (hoặc một ScrollViewer root) mà sẽ cho phép chúng tôi di chuyển đến tất cả các phần của cửa sổ như thế này và chỉ có các thanh cuộn bên ngoài được hiển thị khi mọi thứ là kích thước tối thiểu.
Hình 5: xem liên kết từ hình ảnh 1
BẤT CỨ LÝ DO? quá nhiều hình ảnh? đây là một chút XAML cho mọi người cố gắng làm cho nó hoạt động (nó chỉ là một ví dụ nhanh cửa sổ ...)
<Window x:Class="WpfTest1.ScrollTestWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="ScrollTestWindow" Height="400" Width="700">
<ScrollViewer >
<DockPanel LastChildFill="True" ScrollViewer.CanContentScroll="True" ScrollViewer.HorizontalScrollBarVisibility="Visible">
<Grid DockPanel.Dock="Top">
<TextBlock Text="Example controls above listview" Background="LightGray" FontSize="30"></TextBlock>
</Grid>
<Grid DockPanel.Dock="Bottom">
<TextBlock Text="Example controls below listview" Background="LightGray" FontSize="30"></TextBlock>
</Grid>
<ListView FontSize="30">
<ListView.View>
<GridView>
<GridViewColumn Width="190" Header="Date" />
<GridViewColumn Width="200" Header="Day Of Week" DisplayMemberBinding="{Binding DayOfWeek}" />
<GridViewColumn Width="120" Header="Year" DisplayMemberBinding="{Binding Year}" />
</GridView>
</ListView.View>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
<sys:DateTime>1/1/1</sys:DateTime>
</ListView>
</DockPanel>
</ScrollViewer>
Điều đó không phù hợp với hình ảnh số 3, phải không? Bạn không có vấn đề tương tự như trong hình 4 khi cửa sổ của bạn thực sự nhỏ? – Jan
Có, đặt MinHeight trên cửa sổ nếu bạn muốn tránh điều này. Nhưng, thông thường, điều này là trái với ý của người dùng. Tôi không nghĩ rằng bạn có thể làm nhiều trong trường hợp như vậy và tôi không nghĩ rằng nhiều người dùng sẽ muốn thay đổi kích thước cửa sổ đến một chiều cao nhỏ như vậy. – Timores
Tôi sẽ đánh dấu điều này như một câu trả lời mặc dù nó giống như "chỉ không để cửa sổ nhỏ đi". Bất kỳ ý tưởng khác nào? – Jan