2010-04-04 114 views
1

我越来越疯狂。它在Windows窗体中非常容易,但是在wpf中它似乎有所不同。我发现每个例子都在C#中,我不能加适应它。嗯,这是我的代码。 Atm,我刚刚定义了列:如何将项目行添加到列表视图WPF和VB.net

'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) 

在此先感谢。

+2

事实上,每一个代码示例是在C#中应该告诉你一些关于VB.NET的用处... – 2010-04-04 20:06:58

+0

1 。您可以使用C#到VB转换器之一来转换示例代码(向Google询问这些转换器)。 2.我不明白你想要做什么:你谈论“添加项目*行*”,但你的代码似乎添加*列* ... – Heinzi 2010-04-04 20:09:33

+3

Matti,VB.NET和C#在功能上等同于大多数包括我认为WPF所关心的一切。如果他或他的团队比使用C#更适合使用VB,那么VB将比C#更加“有用”。它可以轻松地做到他需要的东西。敲VB的“有用”是不好的建议。 – itowlson 2010-04-04 20:53:04

回答

1

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

  1. 添加ListViewItems到ListView.Items财产。这是WinForms的方式,但在WPF中不是惯用的。
  2. 设置ListView.ItemsSource属性。然后WPF将为ItemsSource集合中的每个条目创建一行在这种情况下,您将不需要Dim ListViewItem对象。这是习惯性的WPF。

要做到选项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

是啊,我知道了一些天前,谢谢。 对于未来的用户:

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() 

ŸELDISEÑ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>