我在我的WPF项目中使用binding
表(db)到listview
。但是,如果我启动我的项目,列表视图是空的。我使用linq来获取我的实体框架的数据,而address
肯定是正确的字符串。
我的绑定是错误的,如何解决?
xaml
<ListView ItemsSource="{Binding Items}" x:Name="lstvw_Overview" >
<ListView.View>
<GridView>
<GridViewColumn Header="Adresse"
DisplayMemberBinding="{Binding structureAddress}"/>
</GridView>
</ListView.View>
</ListView>
码
我很确定我的桌子已填满
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
答案 0 :(得分:1)
对于WPF绑定,始终提供Property
定义,Binding
类不支持这些字段。因此,您需要将structureAddress
转换为属性才能使其正常工作。
由于您将Window(?)类实例设置为自己的DataContext
并尝试绑定ItemsSource="{Binding Items}"
,因此您的窗口类需要包含一个名为Property
的{{1}}一些集合类型(例如Items
)。因此,将您的集合从ObservableCollection
移动到外部Window类,并且不要在后备字段上使用Structure Uebersicht
。
请注意,您不需要Shared
上的属性设置器,因为您初始化Items
一次,然后您只修改包含的项而不是集合引用本身。