为什么要在ListView中乘以项目?

时间:2015-01-31 16:19:53

标签: c# xaml listview windows-phone-8

我在主页的Loaded事件中创建了一个List,其中包含了我的类的一些对象" Regioni"和#34; Musei"

然后我在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 = "mbac-sspsae-fi@beniculturali.it",
               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中我发现两次相同的项目?

1 个答案:

答案 0 :(得分:2)

这是因为Loaded - 事件再次触发并再次添加项目。

因此,在添加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 }); } } 是否已存在:

{{1}}