2015-01-31 2 views
0

я создал в Loaded случае главной страницы, список с некоторыми объектами моего класса «Regioni» и «Musei»Зачем умножать элементы в ListView?

Затем я добавил эти пункты в ListView, а также восстановление SelectedItem событие выбранного объекта и принять это на новой странице

private void Page_Loaded(object sender, RoutedEventArgs e) 
    { 

     reg.Add(
      new Regioni 
      { 
       NomeRegione = "Toscana", 
       NomeProvincia = "Firenze" 
      }); 

     reg.Add(
      new Regioni 
      { 
       NomeRegione = "Toscana", 
       NomeProvincia = "Prato" 
      }); 

     var gruppi = reg.OrderBy(x => x.NomeRegione).GroupBy(x => x.NomeRegione); 
     Museum.Source = gruppi; 


     mus.Add(
      new Musei 
      { 
       NomeMuseo = "Galleria degli Uffizi", 
       Paese = "Firenze", 
       NumeroTel = "055294883", 
       IndirizzoEmail = "[email protected]", 
       PrezzoBiglietto = "8 € Intero, 4€ Ridotto\r\nGratuito inferiore 18 anni", 
       Apertura = "Da martedì a domenica,\r\nore 8,15-18,50 Chiusura: Lunedi,Capodanno,Natale,1° Maggio.", 
       IndirizzoWeb = "http://uffizi.firenze.it/", 
       Immagine="Assets/Immagini/galleria-uffizi1.jpg", 

       }); 
    } 



private async void ListView_ItemClick_TuttiMusei(object sender, ItemClickEventArgs e) 
     { 
      var NuovoMuseo = (Musei)e.ClickedItem; 
      this.Frame.Navigate(typeof(DettaglioMuseo), NuovoMuseo); 
     } 

Почему, когда я вставить объект в новую страницу «DettaglioMuseo», и вернуться на главную страницу, в ListView я найти те же самые пункты в два раза?

ответ

2

Это происходит потому, что Loaded -event снова выстреливает и снова добавляет предметы.

Таким образом, вы должны проверить, если ваш Regioni s уже существует, прежде чем добавить их:

private void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    AddIfNotExists("Toscana", "Firenze"); 
    AddIfNotExists("Toscana", "Prato"); 

    var gruppi = ... 
    ... 
} 

private void AddIfNotExists(string regione, string provincia) 
{ 
    if (!reg.Any(r => r.NomeProvincia == regione && r.NomeProvincia == provincia)) 
    { 
     reg.Add(new Regioni { NomeRegione = regione, NomeProvincia = provincia }); 
    } 
} 
+0

Спасибо, это работает, но есть альтернативный метод? Иногда бывает, что в некоторых элементах я публикую некоторые свойства, другие объекты в других свойствах и т. Д. Для каждого объекта не вставляются все свойства (см. Музеи классов). Есть ли альтернативный метод? – SMM

+0

Я понимаю, что вы имеете в виду. Вы можете реализовать равные в своих классах (посмотрите здесь (https://msdn.microsoft.com/en-us/library/336aedhh%28v=vs.85%29.aspx) или [здесь, на итальянском] (https://msdn.microsoft.com/it-it/library/336aedhh%28v=vs.85%29.aspx)). С реализованным вы можете сравнить свои объекты, например 'if (nuovoMuseo == altroMuseo) {lista.Add (nuovoMuseo); } '. – khlr

+0

Существует метод, который вызывается только один раз, когда я открываю страницу? – SMM

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