2017-07-16 20 views
0

私はGridViewのプロジェクトがあり、イメージと3つのTextBlockが必要です。画像には固定のHeightWidthのプロパティがあり、最初のTextBlockには1行のテキストまたは2のいずれかがあります。もう1つのTextBlockには1行のテキストしかありません。GridViewのアイテムの高さは固定されています

問題は、最初のTextBlockは、テキストのすべての1行を持っている場合は完全に示されているが、テキストが長い1行を超える場合、最後のTextBlockGridViewItemに示されていない、それが隠さ取得する場所、それが押し下げられていることです。

<GridView ItemsSource="{Binding HomeList, Mode=OneWay}"> 
    <GridView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <ItemsWrapGrid Orientation="Horizontal" HorizontalAlignment="Center"/> 
     </ItemsPanelTemplate> 
    </GridView.ItemsPanel> 
    <GridView.ItemTemplate> 
     <DataTemplate x:DataType="local:ItemHelper"> 
      <UserControl> 
       <StackPanel> 
        <Image Name="image" Source="{x:Bind ItemImage}" 
          Height="144" Width="256" HorizontalAlignment="Center"/> 
        <TextBlock Name="title" Text="{x:Bind ItemTitle}" Style="{StaticResource OneLinedItemTitle}"/> 
        <TextBlock Name="section" Text="{x:Bind ItemSection}"/> 
        <TextBlock Name="pubUpdate" Text="{x:Bind ItemPublishTime}"/> 
       </StackPanel> 
      </UserControl> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

私はまたRelativePanelで上記のXAMLを試してみましたが、同じことが起こります。高さを最大高さに固定し、titleの2行のテキストで、またはGridViewの各項目に対して調整可能にします。

image 1

あなたは最初の項目は3 TextBlock秒を示すが、第2項目は、最初のものは、テキストの2行を持っている唯一の2を示していることを見ることができるように。

私は、次の可能なオプションを参照してください。

  1. StackPanelの高さは、アイテムの最大高さのために固定されるように設定
  2. titleの高さは2行で固定されるように設定テキスト
  3. たぶん

を助けるGridViewItemのデフォルトStyleを編集それとも他のPOあり任意の要素の固定高さの設定を伴わないssibleオプション。

提案がありますか?ありがとう。

+0

あなたが最初に 'TextBlock'は2つのラインを持っている場合、最後の' TextBlock'をどうしたいですか? (最後の 'TextBlock'の位置について) –

+0

これは画面に表示されるはずです。問題は基本的に、最初のTextBlockに2行があれば隠されてしまいます。 – Ahmar

+0

'GridView.ItemTemplate'のサイズを変えたいですか? –

答えて

0

StackPanelの代わりにUserControlの中にGridを使用しないでください。 StackPanel内容量はHeightsのみです。 Gridを使用し、RowDefinitionを3番目に設定します。をHeight="*"に設定し、その他の設定をHeight="Auto"に設定します。私は(...それは働いていた)ItemsControlでこれをテストした

<GridView ItemsSource="{Binding HomeList, Mode=OneWay}"> 
    <GridView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <ItemsWrapGrid Orientation="Horizontal" HorizontalAlignment="Center"/> 
     </ItemsPanelTemplate> 
    </GridView.ItemsPanel> 
    <GridView.ItemTemplate> 
     <DataTemplate x:DataType="local:ItemHelper"> 
      <UserControl> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="Auto" /> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="Auto" /> 
        </Grid.RowDefinitions> 
        <Image Grid.Row="0" Name="image" Source="{x:Bind ItemImage}"       Height="144" Width="256" HorizontalAlignment="Center"/> 
        <TextBlock Grid.Row="1" Name="title" Text="{x:Bind ItemTitle}" Style="{StaticResource OneLinedItemTitle}"/> 
        <TextBlock Grid.Row="2" Name="section" Text="{x:Bind ItemSection}" TextWrapping="Wrap"/> 
        <TextBlock Grid.Row="3" Name="pubUpdate" Text="{x:Bind ItemPublishTime}"/> 
       </Grid> 
      </UserControl> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 
+0

これは機能しません。タイトルに2行がある場合、テンプレートのセクション部分を非表示にします。 – Ahmar

+0

実際の解決方法は、StackPanelかGridかどうかにかかわらず、親要素に固定高さを使用することです。 – Ahmar

関連する問題