Advertisement
elGuille

WpfListView (acceder sin SubItems) código para VB11

Dec 27th, 2012
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 3.98 KB | None | 0 0
  1. '------------------------------------------------------------------------------
  2. ' Ejemplo de ListView usando WPF para Desktop                       (27/Dic/12)
  3. ' y cómo acceder a las columnas (sin usar SubItems)
  4. '
  5. ' ©Guillermo 'guille' Som, 2012
  6. '
  7. ' Mira en mi sitio para ver las explicaciones:
  8. ' http://www.elguille.info/NET/WinFX/ejemplos/wpf_listview_subitems.aspx
  9. '------------------------------------------------------------------------------
  10.  
  11. Option Strict Off
  12. Option Infer On
  13.  
  14. Class MainWindow
  15.  
  16.     Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)
  17.         ' Rellenar el listview con datos
  18.         lvDatos.Items.Clear()
  19.         For i = 1 To 10
  20.  
  21.             '' Esto añadirá el mismo texto a todas las columnas
  22.             '' siempre y cuando no hayamos usado ningún Binding
  23.             '' si no, esto no añade nada de nada...
  24.             '.Items.Add("Item número " & i.ToString("00"))
  25.  
  26.  
  27.             If chkAnonimo.IsChecked Then
  28.                 ' Asignamos un tipo anónimo
  29.                 ' Si las columnas (GridViewColumn) tienen un Binding a las propiedades
  30.                 ' los valores se asignarán a cada columna, si no están enlazadas
  31.                 ' se agregará el valor de ToString a cada columna (estará el texto repetido)
  32.                 lvDatos.Items.Add(New With
  33.                                   {.Nombre = "Nombre anónimo" & i.ToString,
  34.                                    .email = "correo" & i.ToString & "@outlook.com",
  35.                                    .Edad = 17 + i
  36.                                   })
  37.  
  38.             Else
  39.                 ' Asignamos un valor de un tipo definido (Colega)
  40.                 ' que tiene como mínimo las propiedades que vamos a usar
  41.                 ' en el listiView
  42.  
  43.                 lvDatos.Items.Add(New Colega With
  44.                                   {.Nombre = "Nombre " & i.ToString,
  45.                                    .email = "email" & i.ToString & "@outlook.com",
  46.                                    .Edad = 17 + i
  47.                                   })
  48.  
  49.             End If
  50.  
  51.         Next
  52.  
  53.     End Sub
  54.  
  55.     Private Sub btnMostrar_Click(sender As Object, e As RoutedEventArgs)
  56.         ' Mostar en el TextBlock el elemento seleccionado
  57.  
  58.         ' Dependiendo de que sea el tipo anónimo o el definido
  59.         ' el valor mostrado será diferente.
  60.         ' En el caso de la clase Colega, si no tenemos sobrecargado el método ToString
  61.         ' mostrará el nombre de la clase: WpfListView_vb.Colega
  62.         txtMostar2.Text = lvDatos.SelectedItem.ToString
  63.  
  64.         If chkAnonimo.IsChecked Then
  65.             ' Si tenemos Option Strict Off podemos hacer esto:
  66.             Dim v = lvDatos.SelectedItem
  67.  
  68.             txtMostar.Text = v.Nombre & " (" & v.email & ")"
  69.  
  70.             ' El problema es que queramos acceder a una propiedad que no exista
  71.             ' (esto dará error)
  72.             'txtMostar.Text = v.Nombre & " (" & v.cagonto & ")"
  73.  
  74.         Else
  75.  
  76.             Dim v = TryCast(lvDatos.SelectedItem, Colega)
  77.  
  78.             txtMostar.Text = v.Nombre & " (" & v.email & ")"
  79.  
  80.             ' como ahora usamos un tipo previamente definido
  81.             ' si usamos esto:
  82.             '   txtMostar.Text = v.Nombre & " (" & v.cagonto & ")"
  83.             ' nos dirá que "cagonto" no es un miembro de Colega
  84.  
  85.         End If
  86.  
  87.     End Sub
  88.  
  89.     Private Sub lvDatos_SelectionChanged(sender As Object, e As SelectionChangedEventArgs)
  90.         ' habilitar según haya o no elementos seleccionados
  91.         btnMostrar.IsEnabled = (lvDatos.SelectedItems.Count > 0)
  92.     End Sub
  93.  
  94. End Class
  95.  
  96. ''' <summary>
  97. ''' Tipo Colega, con las popiedades (o campos)
  98. ''' que tendrán las columnas del ListView.
  99. ''' Aunque puede tener más propiedades
  100. ''' aunque no estén enlazadas con las columnas
  101. ''' </summary>
  102. Class Colega
  103.     Public Property Nombre As String
  104.     Public Property email As String
  105.     Public Property Edad As Integer
  106.  
  107.     ' Podemos tener más propiedadas
  108.     Public Property Apellidos As String
  109. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement