我正在使用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比较陌生,所以请原谅。
答案 0 :(得分:0)
答案 1 :(得分:0)
问题是,当你再次离开你的页面1时,它基本上被处理掉了。这意味着也会删除在列表框中设置的任何文本。换句话说,您需要在离开之前保存该页面的状态。
这里有几个可能性:
通过在所有页面都可以使用的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;