我正在使用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
,后面的堆栈按预期运行,除非我只有一个后退箭头,如果我启用了“使用shell后退按钮”设置。
以下是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 :(得分:1)
您需要标题中的框架。
byte[] byteArray = null;
using (var fs = new FileStream(excelFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
int numBytesToRead = Convert.ToInt32(fs.Length);
byteArray = new byte[numBytesToRead];
fs.Read(byteArray, 0, numBytesToRead);
}
using (MemoryStream mem = new MemoryStream()) {
mem.Write(byteArray, 0, byteArray.Length);
XLWorkbook wb = new XLWorkbook(mem);
...
}