2016-06-09 50 views
0

我有一个名为“dgvresults”的数据网格,并且我在代码隐藏中向此数据网格添加列,如下所示。阅读在WPF数据网格中选择的行

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

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

此步骤完成后,我使用它来添加行。

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 

类看起来像这样

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 

最终的结果看起来有点像这样...

enter image description here

我目前具有是如何计算的问题是什么了解如何查找数据网格中的所有选中项目,并逐列读取每一行。

任何意见将有所帮助!

谢谢!

回答

0

只是回答我的问题,谢谢:)

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

你也可以使用LINQ的胡安提到:进口System.Linq的点心在用户选中=从u其中u.IsChecked = True对于检查中的每个项目... –

1

我是新来的,在stackoverflow :-),而不是在这个问题上的专家,但为什么你不能迭代用户(数据源)列表(foreach或使用LINQ)来查找检查的。 datagrid只显示你的数据源。

+0

我的问题,是如何做到这一点:) – TonyW