0

ナビゲーションをテストするための非常に単純なプロジェクトを作成します。以下に手順を示します。

  1. 空のアプリ (XAML/C#) プロジェクトを作成します。
  2. プロジェクトに基本ページ「PageTwo」を追加します。
  3. HyperlinkBut​​ton と TextBox を MainPage に追加します。
  4. MainPage のコード ビハインドで、Frame.Navigate メソッドを使用して PageTow に移動し、TextBox の Text をパラメーターとして渡します。
  5. PageTwo の OnNavigatedTo メソッドをオーバーライドして、渡されたパラメーターを取得します。

プロジェクトを実行し、TextBox にテキストを入力し、PageTwo のボタンをクリックするとうまくいきますが、PageTwo から組み込みの [戻る] ボタンをクリックすると、例外が発生します: 値を null にすることはできません。オーバーライドの OnNavigatedTo メソッドにコメントすると、[戻る] ボタンで例外なくメイン ページに移動できます。

誰でも助けることができますか?

MainPage.xaml:

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel>
        <TextBox Width="200" Name="TB"/>
        <HyperlinkButton Content="Go to PageTwo" Click="HyperlinkButton_Click_1"/>
    </StackPanel> 
</Grid>

MainPage.xaml.cs:

private void HyperlinkButton_Click_1(object sender, RoutedEventArgs e)
    {
        Frame.Navigate(typeof(PageTwo), TB.Text);
    }

PageTwo.xaml:

<TextBlock Name="TB" Grid.Row="1"/>

PageTwo.xaml.cs:

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        TB.Text = e.Parameter as string;
    }
4

1 に答える 1

1

一般に、UI メソッドをオーバーライドするときは、ベースも呼び出す必要があります。

PageTwo.xaml.csのオーバーライドをOnNavigatedTo次のように変更しても、コードは例外を引き起こしません。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    TB.Text = e.Parameter as string;
    // call base method
    base.OnNavigatedTo(e);
}
于 2013-04-08T16:25:50.510 に答える