0

C#を使用してWP7アプリケーションを作成していますが、あるページから別のページにデータを渡す必要があります。

SOで解決策を見つけましたが、まだ問題が発生しています。

「ページ1」に、「ページ2」からの入力を使用して、ユーザーが入力できるリストを表示したいと思います。

「ページ1」に戻るときに、「ページ2」で次のステートメントを使用しました NavigationService.Navigate(new Uri("/MainPage.xaml?text="+WhoBox.Text, UriKind.Relative));
WhoBox。これはテキストボックスです。

「ページ1」には、次のものがあります。
protected override void OnNavigateTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (NavigationContext.QueryString.ContainsKey("text"))
ListBlock.Text = ListBlock.Text + NavigationContext.QueryString["text"];
}

現在、これは機能しますが、限られた方法で動作します。「ページ2」から何かをもう一度追加しようとすると、そこにあるものListBlock(テキストブロック)が、追加するのではなく、新しく追加されたテキストに置き換えられます。

ListBlock.Text = ListBlock.Text + NavigationContext.QueryString["text"];古いテキストを完全に置き換えるのではなく、新しいテキストを追加するべきではありませんか?

編集:私は解決策を見つけたかもしれません。何らかの理由で、F5を使用してプログラムを実行しても、XAMLまたは.csファイルの変更は反映されません。私は何か間違ったことをしていますか?たとえば、ボタンを削除しても、プログラムをデバッグ(F5)すると表示されます。変更する必要のある設定はありますか?または、他のコマンドを使用することになっていますか?Visual Studioは比較的新しいので、すみません。

4

2 に答える 2

0

問題は、ページ1を再び離れた瞬間に、基本的に破棄されることです。つまり、リストボックスに設定されていたテキストもすべて削除されます。つまり、ページを離れる前に、そのページの状態を保存する必要があります。

ここにはいくつかの可能性があります:

  • AppSettingsを使用します(Windows Phone 7 config / appSettings?を参照してください) 。
  • 状態をローカルデータベースに書き込みます
  • すべてのページで使用できるApp.xaml.csにテキストを保存して、簡単な修正を行います。まず、app.xaml.csファイル内にアプリケーション全体の変数を作成する(必要に応じて初期化する)必要があります。例えば:

    public partial class App : Application
    {     public string myText;
    

今後は、Application.Currentオブジェクトを介して任意のApp変数にアクセスできます。したがって、アプリケーションの一部のページ(MainPageなど)からbigVarにアクセスする必要がある場合は、次のように入力するだけです。

string Text = (Application.Current as App).myText;
于 2012-04-25T10:03:29.337 に答える
0

セッションとデータテーブルの使用を検討してください: セッションからのデータテーブルの保存と取得

于 2012-04-25T03:39:26.913 に答える