2016-05-11 67 views
1

我正在使用Visual Studio 15,並開始爲Windows Phone 8.1創建一個應用程序 所以在這一點上,我需要檢查所有選中的複選框並選擇他的文本並將選中的值添加到列表中(這已經做到了)現在,我需要通過頁面之間的這份名單中,我堅持,我只知道WinForms的方式,並且它不能正常工作在屏幕之間傳遞一個列表。 Windows Phone 8.1 C#

這裏去頁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(名單)」

在窗口形式C#我用這種方式很多,但在WP它不工作,所以任何人都可以告訴我正確的方法來做到這一點?謝謝。

+0

我的回答對你有幫助嗎? – Master117

+0

@ Master117尚未...同樣的錯誤...沒有改變:/ – Bazz

回答

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如何做到這一點。所以基本上,這只是一個資源,你可以在任何你喜歡的頁面上引用它。

+0

嗯,我明白了。但現在,我需要將數據發送到第1頁上的「cDados」,以在richtextbox或其他控件的第2頁上顯示。但我不明白我將如何與此代碼做到這一點。任何幫助? – Bazz

+0

@Bazz你可以通過列表並手動添加它,或者如果你的控件有一個ItemSource屬性,那麼你可以設置ItemSource = page2_list。如果您需要更多幫助,請打開一個新問題。如果我問你的原始問題,請將其標記爲已解決。祝你好運。 –

0
  1. 我想你想

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

或者你只會改變同一Dados的價值。

  • 你需要做的第二頁上列出市民:

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