在屏幕之间传递列表。 Windows Phone 8.1 C#

时间:2016-05-11 19:18:29

标签: c# windows-phone-8 windows-phone-8.1

我正在使用Visual Studio 15并开始为Windows Phone 8.1创建应用程序 所以在这一点上我需要检查所有选中的复选框并选择他的文本并将选中的值添加到列表中(现在已经这样做了),我需要在页面之间传递此列表,我被卡住了,我知道只有winforms方式,它不起作用

这里是第1页的代码

5

现在第二页的代码

        CheckBox[] checkboxes = new CheckBox[] { checkBox, checkBox1,checkBox2,checkBox3,checkBox4,checkBox5,checkBox6,checkBox7,checkBox8,checkBox9, checkbox10, checkbox11, checkbox12, checkbox13};

        List<ClassDados> lista = new List<ClassDados>();
        ClassDados cDados = new ClassDados();

        foreach (CheckBox c in checkboxes)
        {
            if (c.IsChecked == true)
            {                  
                cDados.Pedido = c.Content.ToString();
                lista.Add(cDados);
            }
        }

        Frame.Navigate(typeof(Carrinho), (cDados));

我的班级

public sealed partial class Carrinho : Page
{
    List<ClassDados> lista = new List<ClassDados>();

    public <here>Carrinho</here>(List<ClassDados> cDados)
    {
        this.InitializeComponent();
        lista = cDados;
    }...

&#34;在这里&#34;在第二页上我得到错误:错误CS0051不一致的可访问性:参数类型&#39;列表&#39;比方法更容易获得&#Car; Carrinho.Carrinho(列表)&#39;

在Windows窗体上C#我已经用这么多了,但是在WP上它没有用,所以有人能告诉我正确的方法吗?感谢。

2 个答案:

答案 0 :(得分:0)

  1. 我想你想要
  2. foreach (CheckBox c in checkboxes) { ClassDados cDados = new ClassDados(); if (c.IsChecked == true) {
    cDados.Pedido = c.Content.ToString(); lista.Add(cDados); } }

    或者您只会更改相同Dados的值。

    1. 您需要在第二页上公开列表:

      public List<ClassDados> lista = new List<ClassDados>();
      

答案 1 :(得分:0)

Frame.Navigate(typeof(dest_page), parameter);

只需序列化parameter并将其传递给您的dest_page,它就不会像您假设的那样调用构造函数。

要获得parameter,您希望覆盖第二页的OnNavigatedTo(NavigationEventArgs e),如下所示:

public sealed partial class Carrinho : Page
{
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        YOUR_CLASS c = e.Parameter as YOUR_CLASS;
    }
}

确保您传递的对象是可序列化的(只需保持简单,就可以了)。

另一种方法是使用全局资源定位器。您可以搜索SO以了解如何执行此操作。所以基本上,它只是一种资源,您可以在任何您喜欢的页面上引用它。