2014-04-04 46 views
0

我目前使用WinRTXamlToolkit的AlternativeFrame控件在弹出框中显示多个页面,以设置将某些内容发布到reddit的能力。我目前的问题是AlternativeFrame的导航方法似乎不起作用。从RedditUploadDialog.xamlWindows运行时WinRTXamlToolkit AlternativeFrame Navigate方法不起作用(挂起)

<ScrollViewer HorizontalAlignment="Left" Margin="10,130,0,0" VerticalAlignment="Top" Width="480" Height="310" VerticalScrollBarVisibility="Hidden"> 
      <Controls:AlternativeFrame x:Name="scrollingFrame" extensions:FrameworkElementExtensions.ClipToBounds="True"> 
       <Controls:AlternativeFrame.PageTransition> 
        <Controls:PushTransition ForwardDirection="Random" BackwardDirection="Random" /> 
       </Controls:AlternativeFrame.PageTransition> 
      </Controls:AlternativeFrame> 
     </ScrollViewer> 

摘录

摘自RedditUploadDialog.xaml.cs

/*"scrollingFrame" is an AlternativeFrame control inside of a scrollviewer. RUDSubPage2 is an */AlternativePage control. RUDSubPage2's code page does not have any code in it except for the InitializeComponents method in the 
await this.scrollingFrame.Navigate(typeof(RUDSubPage2)); 

第一次调用导航(不高于)不工作,它加载一个RUDSubPage1控制。问题是,如上所示,第二次调用Navigate时,会在我打电话时挂起。它永远不会回来,所以等待会永远停留在它上面。 RUDSubPage2在它的xaml和代码隐藏文件中几乎是空的,所以没有任何内容干扰Navigate方法。任何想法为什么这不起作用?

编辑:好的,我在WinRTXamlToolkit代码中找到了麻烦的一行。

/// <summary> 
    /// Contains extension methods to wait for FrameworkElement events. 
    /// </summary> 
    public static class FrameworkElementExtensions 
    { 
     /// <summary> 
     /// Waits for the element to load (construct and add to the main object tree). 
     /// </summary> 
     public static async Task WaitForLoadedAsync(this FrameworkElement frameworkElement) 
     { 
      if (frameworkElement.IsInVisualTree()) 
       return; 

      //This line, right here, is the one that keeps hanging. This method is called from within the Navigate method of the AlternativeFrame control. Also, frameworkElement here is the AlternativeFrame while the code is running. 
      await EventAsync.FromRoutedEvent(
       eh => frameworkElement.Loaded += eh, 
       eh => frameworkElement.Loaded -= eh); 
     } 
    } 

出于某种原因,该线之上会一直在我的应用程序挂我尝试调用导航方法的第二时间之后。任何人都知道为什么它会这样做?

+0

在'RedditUploadDialog.xaml.cs'中你在调用'Navigate'函数? –

+0

你能分享一个repro项目吗?您是否尝试过使用源代码而不是NuGet包进行调试? –

+0

导航功能在RedditUploadDialog.xaml.cs文件的按钮按下事件中调用。我会尝试使用源代码并构建它而不是Nuget包,因此我可以通过调试器正确地完成它。我真的没有想到这样做。 –

回答

1

我决定只评论我在原始文章中找到的麻烦行,现在一切正常。这不是一个很好的解决方案,因为我讨厌这样做,使事情发挥作用,但我无法弄清楚为什么这行代码会让我的程序挂起。谢谢您的帮助。