【问题标题】:Page Navigation Windows Phone 8.1页面导航 Windows Phone 8.1
【发布时间】:2015-03-27 20:50:45
【问题描述】:

Windows Phone 8.1 中的页面导航是:

Frame.Navigate(typeof(SecondPage));

或带参数:

Frame.Navigate(typeof(SecondPage), param);

在目标页面上:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
  myTextBox.Text = e.Parameter.ToString();
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
  var val = (myClass)e.Parameter;
  myTextBox.Text = val.Text;
}

但在我的情况下,我想对目标页面上收到的数据做一些事情。例如,我想让用户编辑这些数据并将它们保存为新数据。 我已经搜索了几个小时,我能找到的只是带有或不带参数的页面导航,而不是我上面描述的那个。有没有办法解决这个问题?任何建议,解决方案表示赞赏!

【问题讨论】:

  • 当你说“编辑”时,你想对编辑后的版本做什么?把它传回给调用者?保存到网络服务?
  • 正如我上面所说,将新数据本地保存在 ApplicationData.Current.LocalSettings
  • @ShaheemJohn 你的问题在哪里?只需将其保存到本地设置。 msdn.microsoft.com/en-us/library/windows/apps/xaml/…
  • 是的,我想要对目标页面上接收到的数据做的就是将它们本地保存在 ApplicationData.Current.LocalSettings 中。
  • @cansik 您发送的链接没有解释我的情况。

标签: c# windows-phone-8.1


【解决方案1】:

要将您的文本和设置名称传递给您的编辑表单,请使用 KeyValuePair:

//figure out how to get the text out of the list
var myItem = new KeyValuePair<string, string>("mytextsetting", "listbox.selecteditem.text");
Frame.Navigate(typeof(SecondPage), myItem);

在第二页,你现在可以存储传入的参数了:

KeyValuePair<string, string> _myItem;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
   _myItem = e.Parameter as KeyValuePair<string, string>;
   myTextBox.Text = myItem.Value;
}

现在当用户想要保存编辑的文本时:

_myItem.Value = myTextBox.Text;

//save it to the settings
localSettings.Values[_myItem.Key] = _myItem.Value;

【讨论】: