坚持从页面到页面传递的数据 - WP7和C#

时间:2012-04-25 03:13:27

标签: c# visual-studio-2010 windows-phone-7 navigation

我正在使用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比较陌生,所以请原谅。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

问题是,当你再次离开你的页面1时,它基本上被处理掉了。这意味着也会删除在列表框中设置的任何文本。换句话说,您需要在离开之前保存该页面的状态。

这里有几个可能性:

  • 使用AppSettings(请参阅Windows phone 7 config / appSettings?
  • 将状态写入本地数据库
  • 通过在所有页面都可以使用的App.xaml.cs中保存文本来快速修复:首先,您需要在应用程序内创建应用程序范围的变量(并在需要时初始化) .xaml.cs文件。例如:

    public partial class App : Application
    {     public string myText;
    

从现在开始,您可以通过Application.Current对象访问任何App变量。因此,如果您需要从应用程序中的某个页面访问bigVar(例如MainPage),只需键入:

即可
string Text = (Application.Current as App).myText;