C# 如何在Windows10UWP中为模板Gridview设置可视化状态管理器?

C# 如何在Windows10UWP中为模板Gridview设置可视化状态管理器?,c#,windows,gridview,windows-10,win-universal-app,C#,Windows,Gridview,Windows 10,Win Universal App,我知道VisualStateManager可以在更改大小屏幕UWP时更改控件属性。 但我不知道如何使用Datatemplate Gridview的可视化状态管理器?如何更改属性图像控件、文本块控件?请帮我解决这个问题 <VisualStateManager.VisualStateGroups> <VisualStateGroup> <VisualState x:Name="Phone"> <VisualSt

我知道VisualStateManager可以在更改大小屏幕UWP时更改控件属性。 但我不知道如何使用Datatemplate Gridview的可视化状态管理器?如何更改属性图像控件、文本块控件?请帮我解决这个问题

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup>
        <VisualState x:Name="Phone">
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="0" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
            </VisualState.Setters>
        </VisualState>
        <VisualState x:Name="Tablet">
            <VisualState.StateTriggers>
                <AdaptiveTrigger MinWindowWidth="800" />
            </VisualState.StateTriggers>
            <VisualState.Setters>
            </VisualState.Setters>
        </VisualState>
    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

<GridView x:Name="gv" Grid.Row="1" Background="Gray">
            <GridView.ItemTemplate>
                <DataTemplate>
                    <StackPanel>
                        <Image Source="{Binding ImageLeague}" 
                                                Width="50"
                                               Stretch="None"
                                               VerticalAlignment="Top"
                                              HorizontalAlignment="Left"   />


                        <TextBlock Text="{Binding title}" 
                                                   FontSize="26" 
                                                   Foreground="Black"
                                                   VerticalAlignment="Top"
                                                   HorizontalAlignment="Left"
                                                   />
                    </StackPanel>
                </DataTemplate>
            </GridView.ItemTemplate>
        </GridView>

一种方法是将数据模板包装在UserControl中:

    <GridView Width="200" Height="300" x:Name="gv" Grid.Row="1" Background="Gray" ItemsSource="{Binding myList}">

        <GridView.ItemTemplate>
            <DataTemplate>
                <UserControl>
                    <StackPanel>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup>
                                <VisualState x:Name="Phone">
                                    <VisualState.StateTriggers>
                                        <AdaptiveTrigger MinWindowWidth="0" />
                                    </VisualState.StateTriggers>
                                    <VisualState.Setters>
                                        <Setter Target="MyTextBlock.FontSize" Value="15"/>                                        
                                    </VisualState.Setters>
                                </VisualState>
                                <VisualState x:Name="Tablet">
                                    <VisualState.StateTriggers>
                                        <AdaptiveTrigger MinWindowWidth="600" />
                                    </VisualState.StateTriggers>
                                    <VisualState.Setters>
                                        <Setter Target="MyTextBlock.FontSize" Value="25"/>
                                    </VisualState.Setters>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>

                        <Image Source="{Binding ImageLeague}" 
                                            Width="50"
                                           Stretch="None"
                                           VerticalAlignment="Top"
                                          HorizontalAlignment="Left"   />


                        <TextBlock x:Name="MyTextBlock"  Text="{Binding title}" 

                                               Foreground="Black"
                                               VerticalAlignment="Top"
                                               HorizontalAlignment="Left"

                                               />
                    </StackPanel>
                </UserControl>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>


@Marcelo de Aguiar我不知道确切的技术原因,但在“Windows 10开发者指南”中,有人告诉你必须这样做。(很抱歉,我无法正确解释……也许你可以直接问培训师)我尝试过不同的解决方案,但这些都不管用。有了你的代码,它终于可以工作了。你为我节省了很多时间。非常感谢你!