Windows Metro内容框架导航和后退按钮可见性

时间:2012-12-29 17:08:52

标签: .net windows-8 microsoft-metro winrt-xaml windows-store-apps

我有一个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商店提交应用程序时,您是否有类似的经历?

我真的希望微软能够在测试协议中提供更多细节,从长远来看,这将为每个人节省时间...

2 个答案:

答案 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时被遗忘。

经过这些改变后,它发挥了作用。