2011-02-24 19 views
16

Tamam, pes ediyorum - dikey kaydırma çubuklarını xaml'deki MaxHeight için kodlanmış bir değer belirtmeden liste görünümünde görünmesini nasıl sağlayabilirim? Burada WPF ListView Scrollbars

benim xaml (i veri modelini dahil değildir, ama temelde bir dizin kaydı) ListView denetimi MaxHeight ayarı olmadan

<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> 

, kaydırma çubuğu görünmez Liste görünümünü ekrandan daha büyük hale getirmek için yeterli öğe olduğunda. MaxHeigt = "250" ile kaydırma çubuğu belirir, ancak kullanıcı pencerenin boyutunu değiştirdiğinde liste görünümü artık genişlemiyor.

Belki de yanlış soruyu soruyorum ve şöyle olmalı: Pencerenin yüksekliği değiştiğinde liste görünümünün maksimum yüksekliğini nasıl değiştirebilirim?

Lütfen yardım

, bu

Teşekkür

Lee

cevap

18

sorun DockPanel kullanımı geliyor ... şimdi geçen gün beni delirtiyor edilmiştir. Varsayılan olarak çocuğa gereken tüm alanı verir (boş alan).

<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

Maalesef bu hala benim için çalışmaz ürün hala sayfanın altındaki düşüyorlar ve: Amacıyla

ben yerine DockPanel ait Grid panelini kullanın önermek bunu düzeltmek için kaydırma çubuğu görünmez. Özellikle ScrollViewer.CanContentScroll = ListView'de "True" ScrollViewer.VerticalScrollBarVisibility = "Auto" ayarını bile yapın. – Lee

+0

@Lee - O halde sorun, bu UserControl'ü içeren işaretlemedir. Sorunuza ekleyebilir miyim, böylece bir bakabilir miyim? –

+1

burada ana bilgisayar penceresi ' – Lee