2015-12-21 3 views
1

У меня есть ListView, как этотКак динамически изменять ширину и высоту ItemTemplate в ListView UWP?

<ListView Name="lvTrailers" 
         Grid.Row="3" 
         SelectionChanged="lvTrailers_SelectionChanged" 
         SizeChanged="lvTrailers_SizeChanged"> 
       <ListView.ItemTemplate> 
        <DataTemplate> 
         <Grid Height="65" Margin="5"> 
          <Grid.ColumnDefinitions> 
           <ColumnDefinition Width="*" /> 
           <ColumnDefinition Width="2.5*" /> 
          </Grid.ColumnDefinitions> 
          <Image HorizontalAlignment="Center" 
            VerticalAlignment="Center" 
            Source="{Binding Thumbnail}" 
            Stretch="UniformToFill" /> 
          <TextBlock Grid.Column="1" 
             Margin="10,5" 
             Text="{Binding Title}" 
             TextWrapping="Wrap" /> 
         </Grid> 
        </DataTemplate> 
       </ListView.ItemTemplate> 
      </ListView> 

    private void lvTrailers_SizeChanged(object sender, SizeChangedEventArgs e) 
    { 
     // add some userful code 

     // not working 
     lvTrailers.ItemTemplate.SetValue(HeightProperty, e.NewSize.Height/6); 

    } 

В UWP приложения пользователи могут изменять размер высоту окна и ширины так, когда это произойдет, я хочу, чтобы динамическое изменение размера ListView ItemTemplate тоже. Кто-нибудь мог сказать мне, как это сделать?

ответ

0

Вам необходимо использовать AdaptiveTrigger. Вот пример для этого:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Grid.Resources> 
     <DataTemplate x:Key="MyCustomItemDataTemplate"> 
      <UserControl> 
       <Grid x:Name="content" 
         Margin="8" 
         Background="Transparent"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="2.5*" /> 
        </Grid.ColumnDefinitions> 

        <Image HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          Source="ms-appx:///Assets/StoreLogo.png" 
          Stretch="Uniform" /> 

        <TextBlock Grid.Column="1" 
           Margin="10,5" 
           Text="blabla" 
           VerticalAlignment="Center" 
           TextWrapping="Wrap" /> 

        <VisualStateManager.VisualStateGroups> 
         <VisualStateGroup> 
          <VisualState x:Name="Small"> 
           <VisualState.StateTriggers> 
            <AdaptiveTrigger MinWindowWidth="0" /> 
           </VisualState.StateTriggers> 
           <VisualState.Setters> 
            <Setter Target="content.Height" 
              Value="30" /> 
           </VisualState.Setters> 
          </VisualState> 
          <VisualState x:Name="Wide"> 
           <VisualState.StateTriggers> 
            <AdaptiveTrigger MinWindowWidth="720" /> 
           </VisualState.StateTriggers> 
           <VisualState.Setters> 
            <Setter Target="content.Height" 
              Value="Auto" /> 
           </VisualState.Setters> 
          </VisualState> 
         </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
       </Grid> 
      </UserControl> 
     </DataTemplate> 
    </Grid.Resources> 

    <ListView Name="items" 
       ItemTemplate="{StaticResource MyCustomItemDataTemplate}" /> 
</Grid> 
Смежные вопросы