1

MVVM パターンを使用して Windows アプリを開発しました。ユーザーがリストボックスのユーザーコントロールのアイテムをクリックしたとき。ビューモデルの背後にあるコードは、別のページをナビゲートします。ページは正しく表示されますが、ナビゲーション コンテキストから queryString を取得しようとすると、「NullReferenceException」というエラーが発生します。ビューモデルの uri が修正されていることを確認しました。誰かがそれを機能させる方法を教えてくれますか? 前もって感謝します。

App.xamls.csページに以下のコードを追加するために、ナビゲーションを使用して別のページに移動するとエラーが発生するので、viewModel ページが別のページをナビゲートできるようにします。

    public static PhoneApplicationFrame CurrentRootVisual
    {
        get
        {
            return (App.Current.RootVisual as PhoneApplicationFrame);
        }
    }

    public static bool Navigate(Uri source)
    {
        if (CurrentRootVisual != null)
            return CurrentRootVisual.Navigate(source);

        return false;
    }

    public static void GoBack()
    {
        if (CurrentRootVisual != null)
            CurrentRootVisual.GoBack();
    }

ページをナビゲートするためのコードがviewModelにあります:

 private void ShowCallPage()
        {
            if (m_CurrentQueue != null)

                App.Navigate(new Uri("/PivotPage1.xaml?id=" + m_CurrentQueue.callNumber, UriKind.Relative));

        }

別のページでエラーが発生するコードがあります。

 public PivotPage1()
    {
        InitializeComponent();
        MessageBox.Show(NavigationContext.QueryString.ContainsKey("id").ToString());            

    }
4

1 に答える 1

1

PivotPage1 コンストラクターで NavigationContext オブジェクトにアクセスしないでください。代わりに Loaded イベントを使用してください。

于 2012-09-07T16:46:54.603 に答える