0

Sorum şu: DataTemplate'i ekranın tüm genişliğine nasıl uzatabilirim? Birçok çözüm denedim ama çalışmazlar. GridView.ItemContainerStyle ve benzeri ayarlanmış HorizontalContentAlignment denedim. Ama hiçbir şey işe yaramıyor. Herkes bana bunu nasıl yapabilirim açıklayabilir mi?GridView ItemTemplate Tam Genişlik

<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

Tüm girişimleriniz başarısız oldu, çünkü GridView Şablonunda StackPanel'i kullanıyorsunuz. Izgaraya Geç. Grid tüm mevcut alanı almak, StackPanel - –

cevap

3

, ItemsPanelTemplate o iş yapmanın anahtarı değişiyor: İşte

benim kod parçasıdır. Bir sayfa kaynak olarak tanımlayın:

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

Şimdi GridView için ItemsPanel olarak ayarlamak:

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

Bu bireysel öğeler tüm genişliği boyunca uzanan sağlayacaktır. Hala Nikita önerildiği gibi bir Grid ile sizin DataTemplate kök StackPanel değiştirmeniz gerekir:

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

Zaten iç StackPanel s için doğru ayarlanmış Grid.Column özelliği vardır. Daha önce orada bir Grid kullanmayı denediniz.

+0

Wow ne kadar ihtiyacı var! Nasıl olması gerektiği konusunda çalışıyor! Teşekkürler! –

+0

Son olarak! Eğer sakıncası yoksa lütfen uygulama kaynağında neden ayarlamamız gerektiğini daha ayrıntılı bir şekilde açıklayabilir misiniz? ayar aslında ne yapar? –

+0

@HaikalNashuha Anahtar bölüm şablonu bir kaynak olarak tanımlamıyor, 'GridView 'ItemsPanel' şablonunu değiştiriyor. Varsayılan olarak, 'ItemsWrapGrid '. Burada 'ItemsStackPanel' olarak değiştirdim. Daha fazla bilgi bulabilirsiniz [burada] (https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/listview-and-gridview#change-the-layout-of-items). –

İlgili konular