如何通过IsolatedStorage获取值?

时间:2013-09-02 06:16:59

标签: c# .net windows-phone-7 windows-phone-8

下面的程序是从拾取器中选择米和厘米,它们都是连接的,就像米是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
            }

4 个答案:

答案 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"世界,但我会做以下事情:

  1. 获取用户/ APP的隔离存储空间

    使用(var isoStorage = IsolatedStorageFile.GetUserStoreForApplication()) {

    }

  2. 在那里为您的数据创建一个文件,可能只是序列化您的数据 - 我想我会创建一个Class" Height"其中包含Meters和Centimeters作为整数属性。这可以很容易地保存。如果文件存在,我会覆盖它。

  3. 在下一页中,获取隔离存储文件,反序列化数据并显示它们。

    1. 教程:http://www.dreamincode.net/forums/topic/187702-working-with-isolated-storage/

答案 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();