如何将项目行添加到listview WPF和VB.net

时间:2010-04-04 20:04:17

标签: wpf vb.net listview

我很生气。在Windows窗体中它很容易,但在wpf中似乎有所不同。 我发现的每个例子都在C#中,我不能加入它。 嗯,这是我的代码。 Atm,我刚刚定义了这些列:

 'diseño de las columnas
        Dim item As ListViewItem = New ListViewItem
        Dim Mi_Lista As GridView = New GridView
        Mi_Lista.AllowsColumnReorder = True

        Dim cine As New GridViewColumn()
        Dim Si3d As New GridViewColumn
        cine.Header = "Cine"
        cine.DisplayMemberBinding = New Binding("Cine")
        Si3d.DisplayMemberBinding = New Binding("si3D")
        cine.Width = 140
        Si3d.Header = "3D"
        Si3d.Width = 50
        Mi_Lista.Columns.Add(cine)
        Mi_Lista.Columns.Add(Si3d)

提前致谢。

3 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点:

  1. 将ListViewItems添加到ListView.Items属性。这是WinForms方式,但在WPF中不是惯用的。
  2. 设置ListView.ItemsSource属性。然后,WPF将为ItemsSource集合中的每个条目创建行。 在这种情况下,您不需要自己Dim ListViewItem对象。这是惯用的WPF。
  3. 要做选项2,请写下这样的内容:

    Dim data As ObservableCollection(Of Something) = New ObservableCollection(Of Something)
    ' Populate the collection
    lv.ItemsSource = data
    

    请注意,此处lv是您的ListView,而不是您的GridView。您通常也会在XAML中定义ListView和列,而不是代码,例如

    <ListView Name="lv">
      <ListView.View>
        <GridView>
          <GridViewColumn Header="Cine"
                          DisplayMemberBinding="{Binding Cine}"
                          Width="140" />
        </GridView>
      </ListView.View>
    </ListView>
    

答案 1 :(得分:1)

是的,我几天前得到了它,谢谢。 对于未来的用户:

Public Sub LlenarLista(ByVal película As String)
    ' MessageBox.Show(película)
    Dim dtLista As DataTable
    Dim dt As DataTable = New DataTable()
    Dim connetionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=Cinépolis.mdb"
    Dim connection As OleDbConnection = New OleDbConnection(connetionString)
    connection.Open()
    Dim da As OleDbDataAdapter = New OleDbDataAdapter("SELECT Cines.Nombre as nombre, Películas.Título, Proyecciones.[3D] AS p3d, Cines.web, Cines.Ubicacion as Ubicación, Cines.Parking FROM Películas INNER JOIN (Cines INNER JOIN Proyecciones ON Cines.IdCine = Proyecciones.IDCine) ON Películas.IDPelícula = Proyecciones.IDPelícula WHERE (((Películas.Título)='" & película & "')); ", connection)
    da.Fill(dt)
    dtLista = dt
    lvCines.DataContext = dtLista
    lvCines.SetBinding(ListView.ItemsSourceProperty, New Binding)

    connection.Close()

Yeldiseño:

            <GridView ColumnHeaderTemplate="{StaticResource estiloCabecera}" >
                <GridViewColumn    Header="Cine" DisplayMemberBinding="{Binding nombre}"   />

                <GridViewColumn Header="3D" Width="50" DisplayMemberBinding="{Binding p3d}"/>
                <GridViewColumn Header="Web" Width="150" DisplayMemberBinding="{Binding web}"/>
            </GridView>
        </ListView.View>

    </ListView>

答案 2 :(得分:0)