0

下面的程序是从选择器中选择米和厘米,它们都被连接起来,如果米是 53,厘米是 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

4 回答 4

1

我不确定为什么需要使用 IsolatedStorage 传输数据?如果您只想将一些数据从一个页面传输到另一个页面,您可以使用 Application.Current.Resources.Add()。

例如,假设您有两个页面,包括 Page1 和 Page2。您想将一个整数从 Page1 发送到 Page2。所以你的代码应该是这样的:

第1页

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;

使用这种方法,您只能将数据从一个页面传输到另一个页面。我不会将您的数据保存在任何文件中。

于 2013-09-02T07:34:44.560 回答
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();
于 2013-09-03T13:21:21.667 回答
0

我来自“windows”世界,但我会做以下事情:

  1. 为您的用户/应用程序获取隔离存储

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

    }

  2. 在那里为您的数据创建一个文件,可能只是序列化您的数据 - 我想我会创建一个包含米和厘米作为整数属性的单个类“高度”。这可以很容易地保存。如果文件存在,我会覆盖它。

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

    1. 教程:http ://www.dreamincode.net/forums/topic/187702-working-with-isolated-storage/
于 2013-09-02T06:41:51.137 回答
0

传递参数的方法

1.使用查询字符串

您可以通过查询字符串传递参数,使用此方法意味着必须将您的数据转换为字符串并对它们进行 url 编码。您应该只使用它来传递简单的数据。

导航页面:

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 中。

于 2013-09-02T10:53:21.687 回答