2014-03-11 7 views
0

Я попытался передать данные longlistselector между страницами xaml. Но это не работает.Как передать данные longlistselector между страницами xaml

Как передать данные с помощью строки запроса или любого другого возможного решения. Пожалуйста, помогите мне

Я попробовал этот код:

public class PaymentItem 
    { 
     public string Home { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string Address { get; set; } 
     public string Code { get; set; } 
     public string City { get; set; } 
    } 
    public class PaymentList : ObservableCollection<PaymentItem> 
    { 
     public PaymentList() 
     { 
      Add(new PaymentItem { Home = "Home", FirstName = "Kevin", LastName = "Peter", Address = "paris", Code = "23343", City = "France" }); 
     } 
    } 

    private void imgEditdAddress_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
     PaymentItem dataItem = ((FrameworkElement)sender).DataContext as PaymentItem; 

У меня есть сомнения в этой части Я хочу, чтобы передать значения DataItem на другой странице редактирования

 this.NavigationService.Navigate(new Uri("ModifiedAddress.xaml", UriKind.RelativeOrAbsolute)); 
    } 

ответ

1

Querystrings не может быть используется с определенным пользователем объектом, поскольку он хранит только одну переменную.

Вы можете сохранить определенные пользователем объекта в настройках приложения IsolatedStorage

сохранить объект прямо перед выполнением navgation

IsolatedStorageSettings.ApplicationSettings["State"] = dataItem; 
IsolatedStorageSettings.ApplicationSettings.Save(); 

и на второй странице OnNavigatedTo Handler Просто получить объект назад

if (IsolatedStorageSettings.ApplicationSettings.Contains("State") == true) 
{ 
var object= IsolatedStorageSettings.ApplicationSettings["State"] as PaymentItem; 
//Remove the state now 
IsolatedStorageSettings.ApplicationSettings.Remove("State"); 
IsolatedStorageSettings.ApplicationSettings.Save(); 
} 
+0

Большое спасибо Аману. – Kanniyappan

0

В навигационном запросе вы просматриваете какую-то важную информацию.

NavigationService.Navigate(new Uri("/ModifiedAddress.xaml?paymentId=1", UriKind.Relative)); 

Тогда на SomePage разобрать, что Id, и получить PaymentItem от какого-то вашего хранилища ...

Это трудно дать больше информации, основанный на коде, вы дали.

Второй вариант (немного хуже) состоит в том, чтобы разделить элемент через класс App, к которому можно получить доступ со всех страниц.

0

Чтобы добавить несколько вариантов ответа Амана:

вы также можете передать переменные на сайт навигационных событий. Вы можете сделать это, переопределив событие OnNavigatedFrom страницы и добавив доступное свойство на страницу, в которую вы хотите передать что-то.

пример:

Page1.xaml.cs 

protected override OnNavigatedFrom(...args... e) 
{ 
    if(e.Uri.OriginalString.Contains("Page2.xaml")) 
    { 
     ((Page2)e.Content).SourceList = Page1LongListSelector.ItemSource; 
    } 
} 

Тогда Page2:

Page2.xaml.cs 

public List<SomeObject> SourceList 
{ 
    get; 
    set; 
} 

.... 
Page2LongListSelector.ItemSource = SourceList; 
.... 

Это может быть сделано, потому что событие OnNavigatedFrom называется ПОСЛЕ навигация была сделана и вторая построена страница.

0

Вы можете попытаться получить данные на странице, которую вы продвигаете с помощью метода OnNavigatedTo.

читать эту статью, чтобы понять, как это работает:

How to pass data between pages in Windows Phone: Alternatives

И после загрузки этого примера, чтобы изучить код:

Passing Data between Pages

Надежда помогает! Приветствую!

Смежные вопросы