0

私の質問は、DataTemplateを画面の全幅に伸ばす方法です。私は多くのソリューションを試しましたが、動作しません。 HorizontalContentAlignment、設定GridView.ItemContainerStyleなどを試しましたが、何も機能しません。どのように私はこれを行うことができます誰も私に説明できますか?ここでGridView ItemTemplate Full Width

は、私のコードの一部です:

<Grid Style="{StaticResource GeneralAppBackground}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
     <RowDefinition Height="*" /> 
    </Grid.RowDefinitions> 
    <Pivot x:Name="AccountInfoOptions" Grid.Row="1"> 
     <PivotItem Header="История"> 
      <GridView ItemsSource="{x:Bind CheckoutList}" Margin="5,0,5,0"> 
       <GridView.ItemTemplate> 
        <DataTemplate x:DataType="data:UserCheckout"> 
         <StackPanel Orientation="Horizontal" BorderBrush="Transparent" Background="White" Padding="5" Margin="0,5,0,0"> 
          <StackPanel Grid.Column="0" Orientation="Vertical" VerticalAlignment="Center" Margin="0,0,10,0"> 
           <TextBlock FontSize="14" Text="{x:Bind CheckoutDate}" Foreground="#979797" /> 
           <TextBlock FontSize="14" Text="{x:Bind CheckoutTime}" Foreground="#979797" /> 
          </StackPanel> 
          <StackPanel Grid.Column="1" VerticalAlignment="Center"> 
           <StackPanel Orientation="Horizontal"> 
            <TextBlock Text="{x:Bind CheckoutSum}" FontSize="22" FontWeight="Bold" /> 
            <Image Source="/Assets/TengeIcon.png" Width="20" Margin="5,0,0,0"/> 
           </StackPanel> 
           <TextBlock Text="{x:Bind CheckoutTitle}" TextAlignment="Center" /> 
          </StackPanel> 
         </StackPanel> 
        </DataTemplate> 
       </GridView.ItemTemplate> 

       <GridView.ItemContainerStyle> 
        <Style TargetType="GridViewItem"> 
         <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
        </Style> 
       </GridView.ItemContainerStyle> 
      </GridView> 
     </PivotItem> 
    </Pivot> 

+1

GridViewのテンプレートでStackPanelを使用しているため、すべての試みが失敗しました。グリッドに変更。 Gridは利用可能なスペースをすべて取る、StackPanel - どれくらい必要なのか –

答えて

3

それが動作することへの鍵、ItemsPanelTemplateを変化させています。ページリソースとしてそれを定義します。

<Page.Resources> 
    <ItemsPanelTemplate x:Key="ItemsPanelTemplate"> 
     <ItemsStackPanel /> 
    </ItemsPanelTemplate> 
</Page.Resources> 

今すぐあなたのGridViewためItemsPanelとして設定:

<GridView ItemsSource="{x:Bind CheckoutList}" 
      Margin="5,0,5,0" 
      ItemsPanel="{StaticResource ResourceKey=ItemsPanelTemplate}"> 

これは、個々のアイテムは、全幅にわたって伸ばすことができます。

<DataTemplate x:DataType="local:UserCheckout"> 
    <Grid BorderBrush="Transparent" Background="White" Padding="5" Margin="0,5,0,0"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <StackPanel Grid.Column="0" Orientation="Vertical" VerticalAlignment="Center" Margin="0,0,10,0"> 
      <TextBlock FontSize="14" Text="{x:Bind CheckoutDate}" Foreground="#979797" /> 
      <TextBlock FontSize="14" Text="{x:Bind CheckoutTime}" Foreground="#979797" /> 
     </StackPanel> 
     <StackPanel Grid.Column="1" VerticalAlignment="Center"> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{x:Bind CheckoutSum}" FontSize="22" FontWeight="Bold" /> 
       <Image Source="/Assets/TengeIcon.png" Width="20" Margin="5,0,0,0"/> 
      </StackPanel> 
      <TextBlock Text="{x:Bind CheckoutTitle}" TextAlignment="Center" /> 
     </StackPanel> 
    </Grid> 
</DataTemplate> 

をあなたは既に内部StackPanel秒間正しく設定Grid.Column性質を持っている:ニキータが示唆したようにあなたはまだGridであなたのDataTemplateにルートStackPanelを交換する必要があります。前にGridを使用しようとしていたようです。

+0

うわー!それはどのようにする必要があります作品!ありがとう! –

+0

最後に!あなたが気にしない場合は、アプリリソースでなぜそれを設定する必要があるのか​​を詳細に教えてください。実際に設定は何ですか? –

+0

@HaikalNashuha重要な部分はテンプレートをリソースとして定義していないので、 'GridView'' ItemsPanel'テンプレートを変更しています。デフォルトでは、 'ItemsWrapGrid'です。ここでは、これを 'ItemsStackPanel'に変更します。詳細はこちら[こちら](https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/listview-and-gridview#change-the-layout-of-items) )。 –

関連する問題