2016-06-09 11 views
0

Ich habe ein Datagrid namens "dgvresults", und ich füge Spalten zu diesem Datagrid in Codebehind wie folgt hinzu.Lesen, welche Zeile in WPF-Datagrid ausgewählt ist

Dim column_selected As New DataGridCheckBoxColumn() 
column_selected.Header = "Selected" 
column_selected.Binding = New Binding("IsChecked") 
dgvResults.Columns.Add(column_selected) 

und

Dim column_username As New DataGridTextColumn() 
column_username.Header = "User Name" 
column_username.Binding = New Binding("UserName") 
dgvResults.Columns.Add(column_username) 

Nachdem dies geschehen ist, verwende ich diese Zeilen hinzuzufügen.

Private Sub run_click(sender As Object, e As RoutedEventArgs) 

For Each item In SearchFunctions.Usersearch 
      'addrows(item) 

      users.Add(New User With { _ 
       .UserName = item 
      }) 

     Next 

     dgvResults.ItemsSource = users 

End Sub 

Die Klasse sieht wie folgt aus

Imports System.ComponentModel 


Public Class User 

    Implements INotifyPropertyChanged 

    Public Property UserName() As String 
     Get 
      Return m_UserName 
     End Get 
     Set(value As String) 
      m_UserName = value 
     End Set 
    End Property 
    Private m_UserName As String 


    Public Property IsChecked() As Boolean 
     Get 
      Return _IsChecked 
     End Get 
     Set(value As Boolean) 
      _IsChecked = value 
      NotifyPropertyChanged("IsChecked") 
     End Set 
    End Property 
    Private _IsChecked As Boolean 

    'Public ReadOnly Property Details() As String 
    ' Get 
    '  Return [String].Format("{0} was born on {1} and this is a long description of the person.", Me.Name, Me.Birthday.ToLongDateString()) 
    ' End Get 
    'End Property 

#Region "INotifyPropertyChanged Members" 

    Public Event PropertyChanged As PropertyChangedEventHandler _ 
     Implements INotifyPropertyChanged.PropertyChanged 

#End Region 

#Region "Private Helpers" 

    Private Sub NotifyPropertyChanged(propertyName As String) 
     RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName)) 
    End Sub 

#End Region 

End Class 

Das Endergebnis wie dies ein wenig aussieht ...

enter image description here

Was ich habe zur Zeit Probleme mit, ist herauszufinden, aus, wie Sie alle überprüften Elemente im Datagrid finden und jede Zeile spaltenweise lesen können.

Jeder Rat wird hilfreich sein!

Danke!

Antwort

0

Nur meine eigene Frage,

For Each item In users 
    If item.IsChecked Then 
     MessageBox.Show(item.UserName) 
    End If 
Next 
+1

Sie auch Linq verwenden könnten als Juan erwähnt: Import System.Linq Dim = Von u Benutzer überprüft Wo u.IsChecked = True für jedes Element in checked ... –

1

Ich bin neu in stackoverflow :-), kein Experte zu diesem Thema, aber warum können Sie nicht einfach über die Benutzer (Datasource) Liste (foreach oder mit linq) iterieren, um die überprüften zu finden. Das Datagrid zeigt nur Ihre Datenquelle an.

+0

Meine Frage :) Dank beantwortet ist, wie man das macht :) – TonyW

Verwandte Themen