0

WP7 を使い始めたばかりですが、おそらく簡単な問題があります。私のアプリでは、ページをナビゲートし、同時に文字列を送信しています。そして問題の元へ。私はこのページにいます:

namespace Zakupy
{
    public partial class List : PhoneApplicationPage
    {


        public List()
        {
            InitializeComponent();

        }



        protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);


            string msg = "";
            string lister = "";
            string sklad = "";


              if (NavigationContext.QueryString.TryGetValue("msg", out msg))
                {
                    string name = "";
                    name = msg;
                    PageTitle.Text = name;
                }

            if (NavigationContext.QueryString.TryGetValue("add", out lister))
            {
                sklad = lister;
                listBox1.Items.Add(sklad);
            }

        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            NavigationService.Navigate(new Uri("/AddList.xaml", UriKind.Relative));
        }


    }
}

別のページから移動しました。そのページから pagetitle を送信し、設定しました。そして、この時点までうまく機能しています。次に、リストボックスにアイテムを追加する次のページに移動します。上記のページに戻ると、2 つの問題があります。1. ページ タイトルがリセットされます。2. リストボックス内の前のアイテムが現在送信されているアイテムに置き換えられます。

4

2 に答える 2

0

わかりました、私は誤解しました。ページに移動するたびに、ページの新しいインスタンスが作成されます (コンストラクターにブレークポイントを設定してみてください)。

ページ全体でデータを保存する場合は、データを app.cs ファイルに保存できます。これは 1 回だけ作成され、アプリのライブ タイムを通じてすべてのページから利用できます。

App.cs ファイル内

 public partial class App: Application
 {
     public List <string> myList = new List <string> ();
     ...

OnNavigationTo ハンドラー内 (リストを処理する場合のみ表示)

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back)
        {

            if (NavigationContext.QueryString.TryGetValue("add", out lister))
            {
                sklad = lister;
                ((App)Application.Current).myList.Add(sklad);
            }

            listBox1.ItemSource = ((App)Application.Current).myList;
        }
    }
于 2013-01-14T08:47:45.463 に答える
0

OnNavigatedTo は、NavigationService から、または [戻る] ボタンを押したときに、アプリケーションがそれに移動するときに常に呼び出されます。

戻って QueryString に何が含まれているかをテストしてみてください。表示したくないデータが含まれている可能性があります。NavigationEventArgs e のプロパティで戻るかどうかをすべてテストできます。

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        if (e.NavigationMode == System.Windows.Navigation.NavigationMode.Back)
        ...
    }
于 2013-01-13T22:42:28.827 に答える