2017-12-09 13 views
0

간단한 격자가있는 페이지가 있습니다 (2x2). 왼쪽 아래 모서리의 한 그리드에는 다른 그리드가 있고이 그리드 내부에는 컬렉션에 바인딩 된 ListView이 있습니다. ListView의 높이가 커지도록 항목을 컬렉션에 추가 할 수 있습니다 (ListView의 높이가 auto로 설정되어 사용 가능한 모든 공간이 사용됩니다).UWP : ListView를 스크롤 할 수 없습니다.

내가 원한다면 사용 가능한 공간 (화면 높이에서)을 모두 사용하면 ListView의 스크롤 막대가 나타나야하며 사용할 수 있어야합니다. 재미있군 (unfunny) 것은 : 스크롤바가 나타 났지만 사용할 수 없다. ListView를 가리킬 때 나타나는 수직 스크롤바로 ListView를 스크롤 할 수 없다.

ListView의 높이를 고정 값으로 설정하면 작동하지만 화면에서 사용 가능한 공간을 모두 사용하지 않기 때문에 그렇게하지 않아도됩니다. 그것이 이런 식으로 행동하는 이유

<Page 
    x:Class="Qooli.TimeTracker.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:Qooli.TimeTracker" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Page.Resources> 
     ... 
    </Page.Resources> 

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"></RowDefinition> 
      <RowDefinition Height="Auto"></RowDefinition> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
      <ColumnDefinition Width="Auto"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 


     <StackPanel Name="spAddEntry" Grid.Row="0" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="30"> 
      <TextBlock Text="Add new entry:" Name="lblAddNewEntry" /> 
      ... 
     </StackPanel> 

     <StackPanel Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="30"> 
      <TextBlock Text="Allocated time:" Name="lblAllocatedTime" /> 
      ... 
     </StackPanel> 

     <Grid Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="1" Margin="30"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"></RowDefinition> 
       <RowDefinition Height="Auto"></RowDefinition> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"></ColumnDefinition> 
      </Grid.ColumnDefinitions> 
      <TextBlock Text="Daily overview:" Name="lblDailyOverview" Grid.Row="0" Grid.Column="0" /> 
      <ListView Name="lvTimeEntries" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" 
         Height="Auto" 
         MinHeight="100" 
         VerticalAlignment="Top" 
         MinWidth="300" 
         SelectionMode="Single" 
         ItemsSource="{x:Bind ViewModel.TimeEntriesAdvancedCollectionView, Mode=OneWay}" 
         ScrollViewer.VerticalScrollBarVisibility="Visible" 
         ScrollViewer.IsVerticalRailEnabled="True" 
         ScrollViewer.VerticalScrollMode="Enabled"> 
       <ItemsControl.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel></StackPanel> 
        </ItemsPanelTemplate> 
       </ItemsControl.ItemsPanel> 
       <ItemsControl.ItemTemplate> 
        <DataTemplate x:DataType="local:TimeEntry"> 
         <Grid Background="{Binding Type, Converter={StaticResource TimeEntryTypeColorConverter}}" Padding="5"> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="200"></RowDefinition> 
          </Grid.RowDefinitions> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="Auto"></ColumnDefinition> 
           <ColumnDefinition Width="Auto"></ColumnDefinition> 
           <ColumnDefinition Width="Auto"></ColumnDefinition> 
           <ColumnDefinition Width="*"></ColumnDefinition> 
          </Grid.ColumnDefinitions> 
          <TextBlock Text="{x:Bind Time, Mode=OneWay}" Style="{StaticResource TitleTextBlockStyle}" 
             MinWidth="60" 
             MaxWidth="60" 
             Grid.Row="0" Grid.Column="0"> 
          </TextBlock> 
          <TextBlock Text="{x:Bind Title, Mode=OneWay}" Style="{StaticResource BodyTextBlockStyle}" Margin="5,0,0,0" 
             MinWidth="100" 
             MaxWidth="100" 
             Grid.Row="0" Grid.Column="1"> 
          </TextBlock> 
          <Button Name="btnEditTimeEntry" Grid.Row="0" Grid.Column="2" Margin="5,5,5,5"> 
           <SymbolIcon x:Name="edit" Symbol="Edit"/> 
          </Button> 
          <Button Name="btnDeleteTimeEntry" Grid.Row="0" Grid.Column="3" Margin="5,5,5,5"> 
           <SymbolIcon x:Name="delete" Symbol="Delete"/> 
          </Button> 
         </Grid> 
        </DataTemplate> 
       </ItemsControl.ItemTemplate> 
      </ListView> 
     </Grid> 

     <StackPanel Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="30"> 
      <TextBlock Style="{StaticResource summaryTextStyle}" Text="Start time:" Name="lblDayStartTime" /> 
      ... 
     </StackPanel> 

    </Grid> 
</Page> 

누군가가 자리 수 :

이 페이지의 XAML은 (나는 데모 목적으로 일부를 제거)입니까?

+1

그리드 행/셀의 높이가 auto -> inside로 설정하면 내부의 모든 공간에 필요한 모든 공간이 확보됩니다. 충분한 공간이 있다면 왜 스크롤합니까? –

+0

그래서 ListView가 배치 된 Grid의 행 또는 다른 Grid (예 : 주 2x2 Grid) 행의 높이를 설정해야합니까? – Patric

+1

두 눈금에 대해 두 번째 행의 높이를 "*"로 설정하십시오. –

답변

1

두 눈금에 대해 두 번째 행의 높이를 "*"으로 설정해야합니다.