2016-02-28 79 views
1

我正在使用Template10启动一个新的Windows 10通用应用程序。我添加了一个GridView与一些项目,其中有一个Type的另一个Page导航。奇数返回堆栈行为

我创建了一个新的View,只是增加了一个头,像这样:

<controls:PageHeader x:Name="PageHeader" Text="Payees"> 
<!-- place stretched, across top --> 
    <RelativePanel.AlignTopWithPanel>True</RelativePanel.AlignTopWithPanel> 
    <RelativePanel.AlignRightWithPanel>True</RelativePanel.AlignRightWithPanel> 
    <RelativePanel.AlignLeftWithPanel>True</RelativePanel.AlignLeftWithPanel> 
    <!-- secondary commands --> 
    <!--<controls:PageHeader.SecondaryCommands> 

    </controls:PageHeader.SecondaryCommands>--> 
</controls:PageHeader> 

我附上一个行为看起来像这样的ItemClick

public void GridViewItemClick(object sender, object parameter) 
{ 
    var arg = parameter as Windows.UI.Xaml.Controls.ItemClickEventArgs; 

    var item = arg?.ClickedItem as AppPage; 
    if (item?.TargetPage != null) NavigationService.Navigate(item.TargetPage); 
} 

导航到新页面工作正常,但由于某种原因,页眉中没有后退按钮,因为在其他页面中存在按钮。如果我切换到使用shell后退按钮,那么它会让我从新页面导航回来。

我更改了网格项目以导航到现有的SettingsPage作为测试,并且后退按钮位于标题中。但是,如果我多次浏览设置页面,它会在后面的堆栈中添加一个新实例。例如,我第一次浏览时,然后点击一次,然后我在主页上。如果我再次转到设置(通过GridView),那么我点击两次以返回到主页面等。

如果我使用默认的“...”菜单导航到设置页面并转到一个的设置页面,然后后退堆栈的行为如预期。我不完全确定我可能做错了什么,因为这里没有什么奇特的事情发生。

编辑

我已经确定,这种行为是唯一从GridView导航。我创建了一个测试Button,导航到我新创建的页面,并且后退堆栈的行为与预期相同,除非我只有后退箭头才能启用“使用外壳后退按钮”设置。

这里是附加的行为看起来像在XAML,如果是任何帮助:

<GridView x:Name="MainGridView" 
      IsItemClickEnabled="True" 
      ItemsSource="{Binding AppPages}"> 
    <interactivity:Interaction.Behaviors> 
     <core:EventTriggerBehavior EventName="ItemClick"> 
      <core:CallMethodAction MethodName="GridViewItemClick" TargetObject="{Binding Mode=OneWay}" /> 
     </core:EventTriggerBehavior> 
    </interactivity:Interaction.Behaviors> 
.... 
</GridView> 
+0

后退按钮的问题是由于缺少'帧= “{X:绑定框架}”'的'PageHeader'定义。但是,底层反向堆栈问题仍然存在。 –

+0

您正在使用的* XamlBehaviors *版本是什么? –

+0

目前使用1.0.3,因为1.1.0在我更新时打破了Template10,所以我恢复到了1.0.3。 –

回答

1

你需要在你的头帧。

<controls:PageHeader x:Name="PageHeader" 
    Text="Payees" Frame="{x:Bind Frame}" />