2016-04-22 14 views
1

VisualStateトリガーをListviewに追加しようとしていますが、トリガーされません。これは、ListViewのアイテムの数が300 +以上の場合があるため、最も効率的です。UWPのListViewにVisualStateトリガを挿入するにはどうすればよいですか?

トリガーは、幅が小さくなるとグリッドの位置を変更しようとしています。

私の現在のコード:

<Page.Resources> 
    <DataTemplate x:Key="mainDataTemplate"> 
     <Grid Padding="15" BorderBrush="Aqua" BorderThickness="1" Margin="6"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto" /> 
       <RowDefinition Height="*"/> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 

      <VisualStateManager.VisualStateGroups> 
       <VisualStateGroup> 
        <VisualState x:Name="mobileView"> 
         <VisualState.Setters> 
          <Setter Target="TitleDescGrid.(Grid.Row)" Value="1" /> 
          <Setter Target="TitleDescGrid.(Grid.Column)" Value="0" /> 
          <Setter Target="TitleDescGrid.(Grid.ColumnSpan)" Value="2" /> 
          <Setter Target="PosterGrid.Background" Value="Pink" /> 
         </VisualState.Setters> 
         <VisualState.StateTriggers> 
          <AdaptiveTrigger MinWindowWidth="500" /> 
         </VisualState.StateTriggers> 
        </VisualState> 
       </VisualStateGroup> 
      </VisualStateManager.VisualStateGroups> 

      <Grid x:Name="PosterGrid" Grid.Column="0" Grid.Row="0" Margin="3,10,3,3" 
            Height="400" Width="180" DataContext="{Binding}" Background="SaddleBrown" 
            SizeChanged="PosterGrid_SizeChanged"> 
       <TextBlock Text="{Binding}" /> 
      </Grid> 
      <Grid x:Name="TitleDescGrid" Grid.Row="0" Grid.Column="1" 
            SizeChanged="TitleDescGrid_SizeChanged" 
            Background="DarkCyan" DataContext="{Binding}" 
            Width="420" Margin="5,14,5,5" > 
       <TextBlock Text="{Binding}" /> 
      </Grid> 
      <Grid x:Name="RatingsGrid" Grid.Row="0" 
            DataContext="{Binding}" 
            Grid.Column="2" 
            Background="Olive" 
            Width="200" Margin="5,15,0,0" > 
       <TextBlock Text="{Binding}" /> 
      </Grid> 
     </Grid> 
    </DataTemplate> 
</Page.Resources> 

そして、私はListViewコントロールが

<StackPanel x:Name="ParentSP"> 
    <ListView x:Name="movieListview" Margin="8,0,8,8" 
       Grid.Row="0" 
       ItemTemplate="{StaticResource mainDataTemplate}" 
       SizeChanged="movieListview_SizeChanged"> 
     <ListView.ItemContainerStyle> 
      <Style TargetType="ListViewItem"> 
       <Setter Property="HorizontalContentAlignment" Value="Center"/> 
       <Setter Property="VerticalContentAlignment" Value="Center"/> 
      </Style> 
     </ListView.ItemContainerStyle> 
    </ListView> 
</StackPanel> 

答えて

4

は、ユーザーコントロールへのDataTemplateの内容をラップしてみ宣言されている部分を持っている内部。それだっ

ので

<Page.Resources> 
    <DataTemplate x:Key="mainDataTemplate"> 
     <UserControl> 
      <Grid Padding="15" BorderBrush="Aqua" BorderThickness="1" Margin="6"> 
+0

ありがとう! – AbsoluteSith

+0

説明してください、なぜ私はそれをラップする必要がありますか? – LaoR

関連する問題