Saya menggunakan untuk proyek WPF saya binding dari tabel (db) ke listview. Tetapi jika saya memulai proyek saya, tampilan daftar kosong. Saya menggunakan linq untuk mendapatkan data kerangka entitas saya dan address jelas memiliki string yang tepat di dalamnya.
Apakah pengikatan saya salah dan bagaimana cara memperbaikinya?

xaml

<ListView ItemsSource="{Binding Items}" x:Name="lstvw_Overview" >
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Adresse" 
DisplayMemberBinding="{Binding structureAddress}"/>     
            </GridView>
        </ListView.View>
    </ListView>  

kode
Saya cukup yakin bahwa meja saya terisi

Public Sub New()
    Initialize()
End Sub

 Dim address As String

 Public Structure Uebersicht
    Dim structureAddress As String
    Shared _items As ObservableCollection(Of Uebersicht) = New ObservableCollection(Of Uebersicht)
    Public Property Items As ObservableCollection(Of Uebersicht)
        Get
            Return _items
        End Get
        Set(value As ObservableCollection(Of Uebersicht))
            _items = value
        End Set
    End Property
End Structure

 Sub Initialize()
    InitializeComponent()
    DataContext = Me
    fillListView()
End Sub

Sub fillListView()
    Using container As New infrastrukturDB_TESTEntities1
        Dim mailAddressList = From tbl_unzustellbarAdressen In container.tbl_unzustellbarAdressen
        For Each mail In mailAddressList
            address = mail.unzustellbarMail.ToString()
            Try
                Uebersicht._items.Add(New Uebersicht With {.structureAddress = address})
            Catch ex As Exception
                MessageBox.Show("error")
            End Try
        Next
    End Using
End Sub
1
Raizzen 14 Desember 2017, 10:42

1 menjawab

Jawaban Terbaik

Untuk pengikatan WPF, selalu berikan definisi Property, bidang tidak didukung oleh kelas Binding. Jadi, Anda perlu mengubah structureAddress menjadi properti untuk membuatnya berfungsi.

Karena Anda mengatur instance kelas Window (?) Anda sebagai DataContext miliknya dan mencoba untuk mengikat ItemsSource="{Binding Items}", kelas jendela Anda harus berisi Property bernama Items dengan beberapa tipe koleksi (misalnya ObservableCollection). Jadi pindahkan koleksi Anda dari dalam Structure Uebersicht ke kelas Window luar dan jangan gunakan Shared di bidang pendukung.

Perhatikan bahwa Anda tidak benar-benar membutuhkan properti setter di Items karena Anda menginisialisasi _items sekali dan kemudian Anda hanya pernah memodifikasi item yang terkandung tetapi bukan referensi koleksi itu sendiri.

1
grek40 14 Desember 2017, 09:37