2011-02-24 34 views
16

Ok, tôi từ bỏ - làm cách nào để có các thanh cuộn dọc xuất hiện trên chế độ xem danh sách mà không chỉ định giá trị mã hóa cứng cho MaxHeight trong xaml?WPF ListView Scrollbars

đây là XAML của tôi (tôi đã không bao gồm các mô hình dữ liệu, nhưng nó là cơ bản một danh sách thư mục)

<UserControl x:Class="WpfApplication1.Views.FolderViewView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="300" d:DesignWidth="500" > 
<DockPanel> 
    <StackPanel DockPanel.Dock="Top"> 
     <Label Name="lblFolder" Content="{Binding Path=FolderName}" MinWidth="250"/> 
     <Button Name="btnFolder" Content="Select Folder" Click="btnFolder_Click" /> 
    </StackPanel> 
    <DockPanel> 
     <ListView Name="lstFiles" ItemsSource="{Binding}" Margin="1" MaxHeight="200" Height="Auto" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" > 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="Filename" DisplayMemberBinding="{Binding Path=FileName}" /> 
        <GridViewColumn Header="Extenstion" DisplayMemberBinding="{Binding Path=Extension}" /> 
        <GridViewColumn Header="Size" DisplayMemberBinding="{Binding Path=FileSize}" /> 
        <GridViewColumn Header="Creation Date" DisplayMemberBinding="{Binding Path=CreateDate}" /> 
        <GridViewColumn Header="Modified Date" DisplayMemberBinding="{Binding Path=ModifiedDate}" /> 
       </GridView> 
      </ListView.View> 
     </ListView> 
    </DockPanel> 
</DockPanel> 

Nếu không có thiết MaxHeight trên điều khiển ListView, thanh cuộn không xuất hiện khi có đủ các mục để làm cho Chế độ xem danh sách lớn hơn màn hình. Với MaxHeigt = "250", thanh cuộn xuất hiện, nhưng bây giờ chế độ xem danh sách không mở rộng khi người dùng thay đổi kích thước của cửa sổ.

Có lẽ tôi đang đặt câu hỏi sai và phải là: Làm cách nào để thay đổi chiều cao tối đa của chế độ xem danh sách khi độ cao của cửa sổ bị thay đổi?

Hãy giúp đỡ, điều này đã được lái xe cho tôi lên tường cho ngày cuối cùng bây giờ ...

Cảm ơn

Lee

Trả lời

18

vấn đề này xuất phát từ việc sử dụng DockPanel. Theo mặc định, nó cung cấp cho con của nó tất cả không gian cần thiết (bất kể không gian có sẵn).

Để khắc phục nó, tôi khuyên bạn sử dụng Grid bảng thay vì DockPanel:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <StackPanel Grid.Row="0"> 
     <Label Name="lblFolder" Content="{Binding Path=FolderName}" MinWidth="250"/> 
     <Button Name="btnFolder" Content="Select Folder" Click="btnFolder_Click" /> 
    </StackPanel> 


    <ListView Grid.Row="1" Name="lstFiles" ItemsSource="{Binding}" Margin="1" > 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Filename" DisplayMemberBinding="{Binding Path=FileName}" /> 
       <GridViewColumn Header="Extenstion" DisplayMemberBinding="{Binding Path=Extension}" /> 
       <GridViewColumn Header="Size" DisplayMemberBinding="{Binding Path=FileSize}" /> 
       <GridViewColumn Header="Creation Date" DisplayMemberBinding="{Binding Path=CreateDate}" /> 
       <GridViewColumn Header="Modified Date" DisplayMemberBinding="{Binding Path=ModifiedDate}" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 
</Grid> 
+2

Xin lỗi, điều này vẫn không làm việc cho tôi, các mặt hàng vẫn thả ra dưới cùng của trang, và thanh cuộn không hiển thị. Ngay cả thiết lập đặc biệt ScrollViewer.CanContentScroll = "True" ScrollViewer.VerticalScrollBarVisibility = "Auto" trên ListView. – Lee

+0

@Lee - Sau đó, vấn đề là với đánh dấu có chứa UserControl này. Có thể thêm nó vào câu hỏi của bạn để tôi có thể xem? –

+1

đây là cửa sổ máy chủ ' ' – Lee

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