【问题标题】:Holding on to data passed from page to page - WP7 and C#保留从页面传递到页面的数据 - WP7 和 C#
【发布时间】:2012-04-25 03:13:26
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    问题在于,当您再次离开第 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;
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-20
        • 1970-01-01
        • 1970-01-01
        • 2014-07-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多