Pass/Receive <list> 页面之间和填充 listview/richtextbox C# Windows Phone 8.1

Pass/Receive <list> between pages and fill listview/richtextbox C# Windows Phone 8.1

我正在为 Win 创建一个小应用程序。 Phone 8.1,用户 select 多个复选框,然后,应用程序执行 Foreach 以验证哪个复选框被 selected,然后应用程序获取复选框内容(文本),填一个<list>然后发送list到另一个页面,在第2页填一个listview控件

第 1 页

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), (lista));

我的Class:

class ClassDados
{
    public string Pedido { get; set; }
    public int Valor { get; set; }
}

第 2 页

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

    public Carrinho()
    {
        this.InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        ClassDados c = e.Parameter as ClassDados;
        Cardapio car = e.Parameter as Cardapio;

    }
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        ClassDados c = e.Parameter as ClassDados;
        Cardapio car = e.Parameter as Cardapio;

    }
}

我的意思是:接收第1页的数据,用第1页的数据填充listview/richtexbox控件,但是我做不到,因为我在C#上的做法是一样的Windows 表格,但与 windows phone 不同,谁能帮帮我?

我不确定我是否完全理解你的问题。您要将第 1 页上创建的 List<ClassDados> 传递给第 2 页吗?

首先,将ClassDados cDados = new ClassDados();行移动到foreach循环中(第1页):

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

然后在页面 2 中添加另一个构造函数:

public Carrinho(List<ClassDados> cDados)
{
    this.InitializeComponent();
    // Use cDados to populate your control
}

我还注意到 ClassDados.Valor 未被使用。您可以向 ClassDados 添加一个构造函数,它接受一个字符串并填充 Pedido 属性.

问题是您想要在 第 2 页 上接收类型 ClassDados 的对象,尽管在 第 1 页你传递了一个 ClassDados 列表 List<ClassDados> lista。所以在 第 2 页 上写 List<ClassDados> lista = e.Parameter as List<ClassDados>。这应该够了吧。另外,确保在从 e.Parameter!

检索对象时检查是否为 null