使用对象数据更新Listview

时间:2017-01-19 18:18:44

标签: wpf vb.net xaml data-binding

我正在尝试将代码中的对象数据放到UI上的listview中,但我似乎无法找到正确的方法。我尝试了多次在互联网上找到的包括一些教程但我总是遇到同样的问题。

大多数示例都在C#中,但我在VB中为此项目编写代码。我有C#经验,但我不相信这是问题。

这是我的XAML:

<ListView x:Name="AD_AccountList" >
                <!--<ListView.ItemTemplate>
                    <DataTemplate>
                        <WrapPanel>
                            <TextBlock Text="{Binding tt1}"/>
                            <TextBlock Text="{Binding tt2}"/>
                            <TextBlock Text="{Binding tt3}"/>
                        </WrapPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>-->
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding tt1}" />
                        <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding tt2}" />
                        <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding tt3}" />
                    </GridView>
    </ListView.View>
</ListView>

我尝试使用和不使用模板或gridview。两者都给出相同的结果: 要么是空行,要么是表填充对象名称“App.testt”

WPF处理数据类型的方式似乎是一个问题,但我读到该模板应该基本上解决了这个问题。

我在VB中的代码:

Private Sub Test_Click(sender As Object, e As RoutedEventArgs)
    Dim testlist As New List(Of testt)
    testlist.Add(New testt("aaa", "bbb", "ccc"))
    testlist.Add(New testt("ddd", "fff", "ggg"))
    testlist.Add(New testt("www", "eee", "111"))

    MessageBox.Show(testlist(0).tt1)
    Dispatcher.Invoke(Sub()
                          AD_AccountList.ItemsSource = testlist
                      End Sub)
    End Sub
End Class

Public Class testt
    Public tt1 As String
    Public tt2 As String
    Public tt3 As String

    Sub New(tt1 As String, tt2 As String, tt3 As String)
        Me.tt1 = tt1
        Me.tt2 = tt2
        Me.tt3 = tt3
   End Sub
End Class

消息框用于测试,它确实向我显示了我请求的数据,因此我的对象肯定会填满数据。

我对WPF很新。我正在将软件从win32移动到WPF,但我不想这么简单,所以如果可能的话,我希望在WPF中处理这个问题。

我不介意可以提供帮助或参考的内容的链接,但我在研究中用完了。

的问候,

1 个答案:

答案 0 :(得分:1)

您无法绑定到XAML中的字段,只能绑定到属性。 testt包含字段,而不是属性。

尝试将字段更改为自动实现的属性:

Public Property tt1 As String
Public Property tt2 As String
Public Property tt3 As String