0

現在、WinRTXamlToolkit の AlternativeFrame コントロールを使用して、ポップアップに複数のページを表示し、何かを reddit に投稿する機能を設定しています。私の現在の問題は、AlternativeFrame のナビゲート メソッドが機能していないように見えることです。

RedditUploadDialog.xaml からの抜粋

<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 (上ではない) への最初の呼び出しは機能します。問題は、上記のように、Navigate への 2 番目の呼び出しが、呼び出しを行うときにハングすることです。それは二度と戻らないので、await は永久にスタックしたままになります。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);
        }
    }

何らかの理由で、Navigate メソッドを 2 回呼び出しようとすると、上記の行がアプリで常にハングします。なぜこれを行っているのか誰にも分かりますか?

4

1 に答える 1