none
Ausgewählte Items einer ListBox speichern und laden. RRS feed

  • Allgemeine Diskussion

  • Hi,

    Ich habe in meiner WP-App eine Seite mit PivotElement in dem jedes Item eine ListBox enthält.

    Der User kann auf der Seite in jeder ListBox verschiedene Einträge markieren.

    Jetzt möchte ich die getroffene Auswahl an meine MainPage übermitteln und gleichzeitig speichern, sodass bei erneutem Aufrufen der Seite die gleichen Einträge wieder markiert sind. Allerings können sich die DataSources an die die ListBoxen gebunden sind währenddessen ändern: Es soll also nur markiert werden was immer noch da ist.

    Wie gehe ich richtig an die Sache heran? Und gibt es ein LongListSelector-Controll das auch MultiSelect unterstützt?

    Mein Ansatz (gescheitert):

    Structure ILists
    
            <XmlElement> Public Property Liste1 As Object
            <XmlElement> Public Property Liste2 As Object
            <XmlElement> Public Property Liste3 As Object
            <XmlElement> Public Property Liste4 As Object
    
    End Structure
    
     Private Sub btnFertig_Click(sender As Object, e As EventArgs) Handles btnFertig.Click
            Dim ILists As New ILists
            ILists.Liste1 = lst1.SelectedItems
            ILists.Liste2 = lst2.SelectedItems
            ILists.Liste3 = lst3.SelectedItems
    
            Using isoStorage As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication
                Using Selection As IsolatedStorageFileStream = isoStorage.CreateFile("Selection.xml")
                    Dim serializer As New System.Xml.Serialization.XmlSerializer(ILists.GetType)
                    Try
                        serializer.Serialize(Selection, ILists)
                    Catch ex As Exception
                        Dim l = ex.Message
                    End Try
    
                    Selection.Flush() : Selection.Close()
                End Using
            End Using
            NavigationService.GoBack()
    
        End Sub
    

        Protected Overrides Sub OnNavigatedTo(e As NavigationEventArgs)
            MyBase.OnNavigatedTo(e)
            Using isoStorage As IsolatedStorageFile = IsolatedStorageFile.GetUserStoreForApplication()
                If Not isoStorage.FileExists("Selection.xml") Then Exit Sub
                Using Selection As IsolatedStorageFileStream = isoStorage.OpenFile("Selection.xml", FileMode.Open)
                    Dim serializer As New System.Xml.Serialization.XmlSerializer(GetType(ILists))
                    Dim reader = New StreamReader(Selection)
                    Dim IList As ILists = DirectCast(serializer.Deserialize(reader), ILists)
    
                    SelectInList(lstAlben, IList.Liste1)
                    SelectInList(lstGenres, IList.Liste2)
                    SelectInList(lstPlaylists, IList.Liste3)
    
                End Using
            End Using
        End Sub
     Private Sub SelectInList(Listbox As ListBox, items As IList(Of Object))
            For Each item In items
                Try
                    Listbox.SelectedItems.Add(item)
                Catch ex As Exception : End Try
            Next
        End Sub

    Montag, 24. Juni 2013 10:52

Alle Antworten