![](/img/trans.png)
[英]Pass/Receive <list> between pages and fill listview/richtextbox C# Windows Phone 8.1
[英]Pass a list between screens. Windows Phone 8.1 C#
我正在使用Visual Studio 15並開始為Windows Phone 8.1創建一個應用程序所以此時我需要檢查所有選中的復選框並選擇他的文本並將選中的值添加到List(這已經做過)現在,我需要通過這個在頁面之間列出,我被卡住,我知道只有winforms方式,而且它不起作用
這里是第1頁的代碼
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;
}...
我的課
class ClassDados
{
public string Pedido { get; set; }
public int Valor { get; set; }
“在這里”第二頁我得到錯誤:錯誤CS0051不一致的可訪問性:參數類型'列表'不如方法'Carrinho.Carrinho(列表)'可訪問
在Windows窗體上C#我已經用這種方式了,但是在WP上它沒有用,所以有人能告訴我正確的方法嗎? 謝謝。
foreach (CheckBox c in checkboxes) { ClassDados cDados = new ClassDados(); if (c.IsChecked == true) {
cDados.Pedido = c.Content.ToString(); lista.Add(cDados); } }
或者你只會改變同一個Dados的值。
您需要在第二頁上公開List:
public List<ClassDados> lista = new List<ClassDados>();
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以了解如何執行此操作。 所以基本上,它只是一個資源,您可以在任何您喜歡的頁面上引用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.