下面的程序是从拾取器中选择米和厘米,它们都是连接的,就像米是53而cm是4那么结果是53.4。我想要做的是,最终输出高度(例如:53.4),年龄,性别应该通过Page1.xaml访问(下一页)。我有很多这样的价值观,我需要在公式中实现。如何通过Windows Phone中的IsolatedStorage将这些值传输到下一页?谢谢。
//Selecting height
private void MHSelect_Click(object sender, RoutedEventArgs e)
{
int mhvalue1 = MHMeterSelector.SelectedItem;
int mhvalue2 = MHCentimeterSelector.SelectedItem;
if(mhvalue1 == 0)
{
mhvalue1 = MHMeterSelector.DefaultValue;
}
MHeight_btn.Content = float.Parse(string.Format("{0}.{1}", mhvalue1.ToString(), mhvalue2.ToString())) + " cm";
//height is selected and concatenated here. mhvalue1 and mhvalue2 are the metre and centimetre values.
}
//Selecting Age
private void MASelect_Click(object sender, RoutedEventArgs e)
{
int mavalue1 = MAMeterSelector.SelectedItem;
if(mavalue1 == 0)
{
mavalue1 = MAMeterSelector.DefaultValue;
}
MAge_btn.Content = mavalue1;
//Age is selected and mavalue1 is the selected age.
}
//Selecting Gender
private void MGenderListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
ListBoxItem kbi = ((sender as ListBox).SelectedItem as ListBoxItem);
MGender_btn.Content = kbi.Content.ToString();
//kbi is selected and kbi.Content should be transfered to next page
}
答案 0 :(得分:1)
我不确定您为什么需要使用IsolatedStorage传输数据?如果仅想要将某些数据从一个页面传输到另一个页面,则可以使用Application.Current.Resources.Add()。
例如,想象一下,你有两个页面,包括Page1和Page2。你想发送一个从Page1到Page2的整数。所以你的代码应该是这样的:
Page1
int sendInteger=0;
Application.Current.Resources.Clear();
Application.Current.Resources.Add("send",sendThis);
2页
int receiveInteger; // receive the integer
object obj = Application.Current.Resources["send"];
receiveInteger =(int)obj;
使用此方法,您只能将数据从一个页面传输到另一个页面。我没有在任何文件上保存您的数据。
答案 1 :(得分:0)
我来自" windows"世界,但我会做以下事情:
获取用户/ APP的隔离存储空间
使用(var isoStorage = IsolatedStorageFile.GetUserStoreForApplication()) {
}
在那里为您的数据创建一个文件,可能只是序列化您的数据 - 我想我会创建一个Class" Height"其中包含Meters和Centimeters作为整数属性。这可以很容易地保存。如果文件存在,我会覆盖它。
在下一页中,获取隔离存储文件,反序列化数据并显示它们。
答案 2 :(得分:0)
传递参数的方法
1.使用查询字符串
您可以通过查询字符串传递参数,使用此方法意味着必须将数据转换为字符串并对其进行网址编码。您应该只使用它来传递简单数据。
浏览页面:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test",UriKind.Relative));
目标网页:
string parameter = string.Empty;
if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) {
{
this.label.Text= parameter;
}
2.使用NavigationEventArgs
浏览页面:
page.NavigationService.Navigate(new Uri("/Views/Page.xaml?parameter=test",UriKind.Relative));
//和..
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
// NavigationEventArgs returns destination page
Page destinationPage = e.Content as Page;
if (destinationPage != null)
{
// Change property of destination page
destinationPage.PublicProperty = "String or object..";
目标网页:
// Just use the value of "PublicProperty"..
3.使用手动导航
浏览页面:
page.NavigationService.Navigate(new Page("passing a string to the constructor"));
目标网页:
public Page(string value) {// Use the value in the constructor...}
Uri和手动导航之间的区别 我认为这里的主要区别是应用程序生命周期。由于导航原因,手动创建的页面会保留在内存中。在这里阅读更多相关信息。
传递复杂的物体 您可以使用方法一或二来传递复杂对象(推荐)。您还可以向Application类添加自定义属性或在Application.Current.Properties中存储数据。
答案 3 :(得分:0)
我经常创建一个类来将我的变量存储在名为ClsController的中。 为了访问任何地方,请执行以下操作:
在App.xaml.cs中添加:
private static ClsController controlerLink = null;
public static ClsController ControlerLink
{
get
{
if (controlerLink == null)
{
controlerLink = new ClsController();
}
return controlerLink;
}
}
当您想要访问该课程时,只需在课程顶部写下:
ClsController controlerLink = App.ControlerLink;
string myData = controlerlink.name;
或致电方法
controlerLink.MyMethod();