Winrt xaml 如何更改纵向模式的面板边距?

Winrt xaml 如何更改纵向模式的面板边距?,winrt-xaml,Winrt Xaml,我有以下GridView <GridView x:Name="itemGridView" AutomationProperties.AutomationId="ItemGridView" AutomationProperties.Name="Grouped Items" Grid.RowSpan="2" Margin="0,-14,0,0" Padding="0,0,0,50"

我有以下GridView

<GridView
        x:Name="itemGridView"
        AutomationProperties.AutomationId="ItemGridView"
        AutomationProperties.Name="Grouped Items"
        Grid.RowSpan="2"
        Margin="0,-14,0,0"
        Padding="0,0,0,50"
        ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"
        ItemTemplate="{StaticResource Standard250x250ItemTemplate}"
        SelectionMode="None"
        IsSwipeEnabled="false"
        IsItemClickEnabled="True"
        ItemClick="ItemView_ItemClick">

        <GridView.ItemsPanel>
            <ItemsPanelTemplate>                        
                 <VirtualizingStackPanel x:Name="ItemGridViewVirtualizingStackPanel" Margin="120,0,120,0" Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
...

...
中,我尝试更改边距

<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemGridViewVirtualizingStackPanel" Storyboard.TargetProperty="Margin">
    <DiscreteObjectKeyFrame KeyTime="0" Value="100,0,20,0"/>
</ObjectAnimationUsingKeyFrames>

但出现错误
无法解析TargetName ItemGridViewVirtualzingStackPanel。


那么如何更改VirtualzingStackPanel的边距呢?

您不能引用从
情节提要中的
项目模板创建的控件,因为您使用的名称是项目模板的名称,而不是从模板生成的控件

在这种情况下,我要么对代码隐藏中的方向更改做出反应,并用C#手动更改控件的边距,要么将
虚拟化StackPanel的
边距
绑定到视图模型的属性上,并在方向更改时相应地更新该属性


您选择的解决方案可能取决于您希望在视图模型中添加多少演示文稿知识。

谢谢!现在,我已经添加了GridView x:Name=“ItemGridViewGrative”和有效的布局,这可能是最简单的解决方案,但在性能方面不是最佳的,因为这样一来,您的可视化树在运行时会大两倍。