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

考虑使用会话和数据表:Storing and retrieving datatable from session

于 2012-04-25T03:39:26.913 回答