0

在 XNA/XAML 混合项目中使用 Windows Phone Toolkit 中的任何控件会在某些情况下挂起应用程序:

  1. 创建“Windows Phone XAML 和 XNA App”项目

  2. 通过键入以下内容为 WP Toolkit 添加 Silverlight:

    Install-Package SilverlightToolkitWP -Version 4.2012.6.25
    

    在包管理器控制台中

  3. 在 MainPage.xaml 添加工具包命名空间:

    <phone:PhoneApplicationPage
    ...
    xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
    ...>
    
  4. 从工具包中添加任何控件,例如。时间选择器:

    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <!--Create a single button to navigate to the second page which is rendered with the XNA Framework-->
        <Button Height="100" Content="Change to game page" Click="Button_Click" />
        <toolkit:TimePicker />
    </Grid>
    
  5. 在 WP8 设备或 WP8 模拟器上运行应用程序(在 WP7 上不存在此问题)

  6. 点击“切换到游戏页面”按钮

  7. 锁定和解锁屏幕或切换到另一个应用程序然后返回。

  8. 单击返回按钮返回主页面

  9. 单击 TimePicker 并尝试更改时间。

  10. 应用程序没有被杀死,但 UI 被阻止

我读到 WP8 以 100% 的兼容性运行 WP7 应用程序,但似乎这不是真的……

4

2 回答 2

0

That's not the right version of the toolkit for WP8. As of now you should use https://nuget.org/packages/WPtoolkit (October 2012 version, version 4.2012.10.30)

于 2013-03-13T05:59:56.657 回答
0

I finally found the solution for this bug! It's very easy to fix but was difficult to discover. Here's the line of code you have to add to your game page class in OnNavigatedFrom(NavigationEventArgs e) method. You have to add this if statement:

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    // Stop the timer
    timer.Stop();

    // Set the sharing mode of the graphics device to turn off XNA rendering
    if (e.IsNavigationInitiator)
        SharedGraphicsDeviceManager.Current.GraphicsDevice.SetSharingMode(false);
    base.OnNavigatedFrom(e);
}
于 2015-12-09T20:14:40.530 回答