簡體   English   中英

在頁面之間傳遞數組參數

[英]Pass array parameters between pages

我試圖將數組從page1.xaml傳遞給page2.xaml。

int[] array = new int[] { 2,4,6,8,10,12,14,15,17,19,21,23,25,27,28,30,32,34,36,38,40,42,43,45,47,49,51,53,55,56,58,60,62,64,66,68,70,71,73,75,77,79,81,83,84,86,88,90,92,94,96,98,99 
        };
NavigationService.Navigate(new Uri("/Page2.xaml?Parameter" + array, UriKind.Relative));

我如何在page2中獲得此數組值?

通過導航傳遞URL參數僅對少數情況有用:

這對於活動磁貼或指示應用程序的狀態等非常有用。

如果您要在頁面之間傳遞更復雜的數據,特別是如果傳遞了該數據的頁面不是導航目標,則絕對不要這樣傳遞。

(如果必須 ,則可以將其編碼為JSON,然后對其進行urlencode,但不能)。

為此使用服務或存儲庫模式。

ID:

  • 在其類文件中定義一個服務,用於管理該集合的數據。
  • App.xaml.cs ,創建服務並將其與DI一起傳遞給頁面。
  • 使用更合理的持久性方式在兩個頁面中對服務進行請求。
   int[] array = new int[] { 2,4,6,8,10,12,14,15,17,19,21,23,25,27,28,30,32,34,36,38,40,42,43,45,47,49,51,53,55,56,58,60,62,64,66,68,70,71,73,75,77,79,81,83,84,86,88,90,92,94,96,98,99 
            };
you could use join function like this
string str= string.Join("-", array.ToArray());
    NavigationService.Navigate(new Uri("/Page2.xaml?Parameter="+str, UriKind.Relative));

And in destination page get this passed query string using split function like this

str.Split('-');

而不是將數組作為查詢字符串傳遞。使用Global靜態類保存值。 只需在另一個位置使用該類的對象即可,並在任務完成時創建該類的新對象。

你可以試試這個

page.NavigationService.Navigate(new Uri("/Page2.xaml?Parameter="+array, UriKind.Relative));

目標頁面:

string parameter = string.Empty;
if (NavigationContext.QueryString.TryGetValue("parameter", out parameter)) {
    this.label.Text = parameter;
}

請注意,您正在創建不帶'='的uri。 請改正。

也請檢查這個問題,這里有很好的解釋:

如何在XAML頁面之間傳遞值(參數)?

編輯:以上建議可能不適用於除字符串以外的任何內容,請查看詳細的解決方案

在WP7 Silverlight應用程序中瀏覽時將復雜對象傳遞給頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM