我正在使用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>
后退按钮的问题是由于缺少'帧= “{X:绑定框架}”'的'PageHeader'定义。但是,底层反向堆栈问题仍然存在。 –
您正在使用的* XamlBehaviors *版本是什么? –
目前使用1.0.3,因为1.1.0在我更新时打破了Template10,所以我恢复到了1.0.3。 –