Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '------------------------------------------------------------------------------
- ' Ejemplo de ListView usando WPF para Desktop (27/Dic/12)
- ' y cómo acceder a las columnas (sin usar SubItems)
- '
- ' ©Guillermo 'guille' Som, 2012
- '
- ' Mira en mi sitio para ver las explicaciones:
- ' http://www.elguille.info/NET/WinFX/ejemplos/wpf_listview_subitems.aspx
- '------------------------------------------------------------------------------
- Option Strict Off
- Option Infer On
- Class MainWindow
- Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
- ' Rellenar el listview con datos
- lvDatos.Items.Clear()
- For i = 1 To 10
- '' Esto añadirá el mismo texto a todas las columnas
- '' siempre y cuando no hayamos usado ningún Binding
- '' si no, esto no añade nada de nada...
- '.Items.Add("Item número " & i.ToString("00"))
- If chkAnonimo.IsChecked Then
- ' Asignamos un tipo anónimo
- ' Si las columnas (GridViewColumn) tienen un Binding a las propiedades
- ' los valores se asignarán a cada columna, si no están enlazadas
- ' se agregará el valor de ToString a cada columna (estará el texto repetido)
- lvDatos.Items.Add(New With
- {.Nombre = "Nombre anónimo" & i.ToString,
- .email = "correo" & i.ToString & "@outlook.com",
- .Edad = 17 + i
- })
- Else
- ' Asignamos un valor de un tipo definido (Colega)
- ' que tiene como mínimo las propiedades que vamos a usar
- ' en el listiView
- lvDatos.Items.Add(New Colega With
- {.Nombre = "Nombre " & i.ToString,
- .email = "email" & i.ToString & "@outlook.com",
- .Edad = 17 + i
- })
- End If
- Next
- End Sub
- Private Sub btnMostrar_Click(sender As Object, e As RoutedEventArgs)
- ' Mostar en el TextBlock el elemento seleccionado
- ' Dependiendo de que sea el tipo anónimo o el definido
- ' el valor mostrado será diferente.
- ' En el caso de la clase Colega, si no tenemos sobrecargado el método ToString
- ' mostrará el nombre de la clase: WpfListView_vb.Colega
- txtMostar2.Text = lvDatos.SelectedItem.ToString
- If chkAnonimo.IsChecked Then
- ' Si tenemos Option Strict Off podemos hacer esto:
- Dim v = lvDatos.SelectedItem
- txtMostar.Text = v.Nombre & " (" & v.email & ")"
- ' El problema es que queramos acceder a una propiedad que no exista
- ' (esto dará error)
- 'txtMostar.Text = v.Nombre & " (" & v.cagonto & ")"
- Else
- Dim v = TryCast(lvDatos.SelectedItem, Colega)
- txtMostar.Text = v.Nombre & " (" & v.email & ")"
- ' como ahora usamos un tipo previamente definido
- ' si usamos esto:
- ' txtMostar.Text = v.Nombre & " (" & v.cagonto & ")"
- ' nos dirá que "cagonto" no es un miembro de Colega
- End If
- End Sub
- Private Sub lvDatos_SelectionChanged(sender As Object, e As SelectionChangedEventArgs)
- ' habilitar según haya o no elementos seleccionados
- btnMostrar.IsEnabled = (lvDatos.SelectedItems.Count > 0)
- End Sub
- End Class
- ''' <summary>
- ''' Tipo Colega, con las popiedades (o campos)
- ''' que tendrán las columnas del ListView.
- ''' Aunque puede tener más propiedades
- ''' aunque no estén enlazadas con las columnas
- ''' </summary>
- Class Colega
- Public Property Nombre As String
- Public Property email As String
- Public Property Edad As Integer
- ' Podemos tener más propiedadas
- Public Property Apellidos As String
- End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement