2017-02-01 11 views
1

私はGridViewをいくつかのデータを表示するように持っています。各GridViewアイテムは、実行時に増加するListViewです。 私はGridViewも同様に増やしたいと思っていますが、GridViewアイテム内にはスクロールバーしか表示されません。 もう1つの要件は、各GridViewアイテムをアイテムの上に揃えることです。GridviewのUWPリストビューが増加しない

<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

はそれをしないでください。 'GridView'の中に' ListView'を置くのは悪い考えです。代わりに 'ItemsControl'を使用してください。 –

+1

@JustinXL ItemsControlはそれを達成するヒントでした。ありがとう! 私が知りましたところ、ListBoxとListViewは親から利用可能なすべての領域を占有しています。そして、これは私の問題でした。 – Christoph

+0

ListViewは複雑で重いコントロールです。あなたは通常あなたのページに1つだけ使用します。 :) –

答えて

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> 
関連する問題