2017-02-01 4 views
1

У меня есть GridView для отображения некоторых данных. Каждый элемент GridView представляет собой ListView, который увеличивается во время выполнения. Я бы хотел, чтобы GridView также увеличивался, но он показывает только полосу прокрутки внутри элемента GridView. Еще одно требование: каждый элемент GridView должен быть выровнен поверх элемента.UWP Listview в Gridview не увеличивается

<GridView ItemsSource="{Binding}" ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="1080"> 
<GridView.ItemTemplate> 
    <DataTemplate>      
     <ListView ItemsSource="{Binding ListData}" HorizontalAlignment="Center"> 
      <ListView.ItemTemplate> 
       <DataTemplate > 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <TextBlock Text="&#x1f382;" 
           FontSize="20" 
           Grid.Column="0" 
           Margin="0,0,10,10" 
           FontFamily="Sergoe UI" 
           Style="{StaticResource BasicTextBlock}"/> 
         <TextBlock Text="{Binding NameString, Converter={StaticResource DataBindingDebugConverter}}" 
           Grid.Column="2" 
           Margin="10,0,0,0" 
           FontSize="16" 
           Style="{StaticResource BasicTextBlock}"/> 
        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
      <ListView.ItemContainerStyle> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="Padding" Value="0"/> 
        <Setter Property="Margin" Value="0,0,0,0"/> 
        <Setter Property="VerticalContentAlignment" Value="Stretch"/> 
       </Style> 
      </ListView.ItemContainerStyle> 
     </ListView> 
    </DataTemplate> 
</GridView.ItemTemplate> 
<GridView.ItemContainerStyle> 
    <Style TargetType="GridViewItem"> 
     <Setter Property="Padding" Value="0"/> 
     <Setter Property="Margin" Value="0,20,0,0"/> 
     <Setter Property="Width" Value="360" /> 
    </Style> 
</GridView.ItemContainerStyle> 
</GridView> 
+0

Не делайте этого. Плохая идея иметь 'ListView' внутри 'GridView'. Вместо этого используйте 'ItemsControl'. –

+1

@JustinXL ItemsControl был подсказкой, чтобы сделать это. Благодаря! Я только что узнал, что ListBox и ListView занимают все пространство, доступное им от родителя и не более того. И это была моя проблема. – Christoph

+0

Да, а также помните, что ListView - сложный и тяжелый контроль. Обычно вы просто используете его на своей странице. :) –

ответ

1

правильный ответ на этот вопрос (на основе намека JustinXL)

<GridView ItemsSource="{Binding}" ScrollViewer.VerticalScrollBarVisibility="Disabled" Width="1080"> 
<GridView.ItemTemplate> 
    <DataTemplate> 
     <ItemsControl ItemsSource="{Binding ListData, Converter={StaticResource DataBindingDebugConverter}}" x:Name="BirthdayListView" HorizontalAlignment="Center" Margin="0,20,0,0"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="Auto"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <TextBlock Text="&#x1f382;" 
            FontSize="16" 
            Grid.Column="0" 
            Margin="0,0,10,10" 
            FontFamily="Sergoe UI" 
            Style="{StaticResource BasicTextBlock}"/> 
         <TextBlock Text="{Binding NameString, Converter={StaticResource DataBindingDebugConverter}}" 
            Grid.Column="2" 
            Margin="10,0,0,0" 
            FontSize="16" 
            Style="{StaticResource BasicTextBlock}"/> 
        </Grid> 
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl> 
    </DataTemplate> 
</GridView.ItemTemplate> 
<GridView.ItemContainerStyle> 
    <Style TargetType="ContentControl"> 
     <Setter Property="Padding" Value="0"/> 
     <Setter Property="Margin" Value="0,20,0,0"/> 
     <Setter Property="Width" Value="360" /> 
     <Setter Property="VerticalContentAlignment" Value="Top" /> 
    </Style> 
</GridView.ItemContainerStyle> 
</GridView>