Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将项目行添加到listview WPF和VB.net_Wpf_Vb.net_Listview - Fatal编程技术网

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

如何将项目行添加到listview WPF和VB.net,wpf,vb.net,listview,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 = Tru

我被它弄疯了。这在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)

提前感谢。

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

  • 将ListViewItems添加到ListView.Items属性。这是WinForms的方式,但在WPF中并不惯用
  • 设置ListView.ItemsSource属性。然后,WPF将为ItemsSource集合中的每个条目创建一行。在这种情况下,您不需要自己暗显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>
    
    
    
    免责声明:C#

    这是起点:

    C#到VB.Net:

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

    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()
    
    Y厄尔尼诺:

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


    每个代码示例都是C语言,这一事实应该告诉您VB.NET的有用性……1。您可以使用一个C#到VB的转换器来转换示例代码(向Google询问这些转换器)。2.我不明白你想做什么:你说的是“添加项目行”,但你的代码似乎添加了列……Matti、VB.NET和C#在大多数领域都是功能等效的,包括我认为WPF所关心的所有方面。如果他或他的团队对VB比C更满意,那么VB对他们来说将比C更“有用”;它可以很容易地做他需要的事情。抨击VB的“有用性”是拙劣的建议。