我有一个Win Metro应用程序,它是一个用C#编写的XAML / MonoGame混合游戏,带有一个XAML起始页面,其中包含一个加载了菜单按钮的框架。
在将此提交到Win Metro商店后,我得到了一个测试协议,基本上只包含我的应用程序的开始屏幕的屏幕截图,并显示“功能不起作用”,开始屏幕的两个按钮用红色圈出。在我的设置中使用这些按钮从来没有问题(两个不同的Win 8机器+模拟器)。
另一个奇怪的事情是后退按钮是可见的,这是不可能的,因为我显式将后退按钮的IsEnabled设置为False,如果帧是起始帧(最初我在XAML中将IsEnabled属性绑定设置为<内容框架的em> CanGoBack ,但这也不起作用。)
这是用户在导航时设置后退按钮可见性的代码。
public MainPage()
{
this.InitializeComponent();
contentFrame.Navigate(typeof(MainFrame));
Window.Current.SizeChanged += VisualStateChanged;
contentFrame.Navigated += contentFrame_Navigated;
}
void contentFrame_Navigated(object sender, NavigationEventArgs e)
{
ApplicationViewState visualState = ApplicationView.Value;
VisualStateManager.GoToState((Control)e.Content,
visualState.ToString(), false);
if (e.Content is MainFrame)
backButton.IsEnabled = false;
else
backButton.IsEnabled = contentFrame.CanGoBack;
}
private void backButton_Click(object sender, RoutedEventArgs e)
{
contentFrame.GoBack();
}
internal void GoHome()
{
while( contentFrame.CanGoBack )
contentFrame.GoBack();
}
如果用户选择退出那里的游戏,则从游戏页面调用GoHome()(我也没有在那里看到任何后退按钮):
private void QuitGame(IUICommand command)
{
App.ClearGame();
Window.Current.Content = App.MainPage;
Window.Current.Activate();
App.MainPage.GoHome();
}
以下是MainFrame中按钮的代码:
private void onePlayerButton_Click(object sender, RoutedEventArgs e)
{
this.Frame.Navigate(typeof(OnePlayerFrame));
}
private void twoPlayersButton_Click(object sender, RoutedEventArgs e)
{
this.Frame.Navigate(typeof(TwoPlayersFrame));
}
所以我的问题是:与桌面PC相比,Surface设备上的后退按钮的可见性是否可以被不同地处理,或者如果后面的按钮可见,测试仪如何获得屏幕截图?并且 - 在向Windows Metro商店提交应用程序时,您是否有类似的经历?
我真的希望微软能够在测试协议中提供更多细节,从长远来看,这将为每个人节省时间...
答案 0 :(得分:1)
这是blog post series on common Windows Store certification failures and how to fix them可能会有所帮助。具体来说,请查看"App must be fully functional"上的文章。导致这种失败的主要问题是:
在您的场景中,可能发生的情况是测试人员导航到另一个页面,然后回到您的主页/开始页面(并且后退按钮似乎向后导航到他们所在的任何子页面)....关于你如何实现后退按钮,当然。
您能否详细介绍以红色圈出的开始屏幕的两个按钮,或点击处理程序中的代码示例?
答案 1 :(得分:0)
Downvote没有解释?至少澄清对问题没用的东西......
无论如何,我认为如果其他人面临类似的问题,我会跟进最终让应用程序正常工作的内容。
在进行通过认证获得应用的提交之前,我做了两处更改: 我改变了
的顺序 contentFrame.Navigated += contentFrame_Navigated;
和
contentFrame.Navigate(typeof(MainFrame));
(所以它就像上面那样,这意味着在事件处理程序中启动时backButton.IsEnabled显式设置为false)
我也删除了对
的电话ApplicationData.Current.LocalFolder.CreateFileAsync("startuplog.txt", CreationCollisionOption.ReplaceExisting);
在App.xaml.cs中的,当我进行调试时,它在本地通过WACK时被遗忘。
经过这些改变后,它发挥了作用。