2015-01-31 4 views
0

메인 페이지의 Loaded 이벤트에서 "Regioni"및 "Musei"클래스의 일부 개체 목록을 만들었습니다왜 ListView에서 항목을 곱합니까?

그런 다음 ListView에 이러한 항목을 추가하고 SelectedItem 이벤트 복구에서 선택한 개체를 가져 와서 가져옵니다. 나는 새 페이지 "DettaglioMuseo"에 개체를 삽입하고있는 ListView에, 메인 페이지에 돌아갈 때 새 페이지

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); 
     } 

에 그 이유는 두 번 같은 항목을 찾을?

답변

2

이것은 Loaded -event가 다시 발생하고 항목을 다시 추가하기 때문에 발생합니다. 당신의 Regioni의 이미에 추가하기 전에 존재하는 경우

그래서 당신은 확인해야합니다 :

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

무슨 뜻인지 알 겠어. 클래스에 equals를 구현할 수 있습니다 (이 [at this] (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

관련 문제