2016-05-02 5 views
0

Wie kann ich einen Wert von einer bestimmten Zelle in einem Datagrid mit dem Auswahlmodus FullRow erhalten?WPF VB.Net Datagrid Wert von einer bestimmten Zelle im FullRow-Auswahlmodus?

Im Moment habe ich diesen Befehl verwenden, aber es nur Anzeige ist der Wert, wenn ich die Zelle manuell auswählen:

Public Sub MenuItem_Click(sender As Object, e As RoutedEventArgs) 
    Dim selectedData As String = "" 
    Dim wert As String = "" 
    For Each dataGridCellInfo In myGridView.SelectedCells() 
     Dim pi As Reflection.PropertyInfo = dataGridCellInfo.Item.[GetType]().GetProperty(dataGridCellInfo.Column.Header.ToString()) 
     Dim value = pi.GetValue(dataGridCellInfo.Item, Nothing) 
     selectedData += dataGridCellInfo.Column.Header + ": " + value.ToString() + vbLf 
     wert = value.ToString 
    Next 
    MessageBox.Show(selectedData) 

End Sub 

Aber ich will nicht manuell die Zelle auszuwählen aller Zeiten. Ich möchte nur auf eine beliebige Zelle in dieser Zeile klicken und immer den Wert aus der Zelle "Pfad" abrufen und in einen String einfügen.

XAML Datagrid-Code:

<DataGrid Name="myGridView" SelectionUnit="Cell" IsReadOnly="True" ItemsSource="{Binding}" Grid.ColumnSpan="3" Background="#FFA4A4A4" BorderThickness="2" BorderBrush="#FF6A6F77" AutoGenerateColumns="False" Margin="10,31,10,149.714" GridLinesVisibility="None"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Header="Track" Binding="{Binding Path=Track}" Width="100"/> 
      <DataGridTemplateColumn Header=""> 
       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Image Width="50" Height="50" VerticalAlignment="Center" HorizontalAlignment="Center" Source="{Binding Path=Image}"/> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 
      <DataGridTextColumn Binding="{Binding Path=Endung}" Width="100" Header=" Container"/> 
      <DataGridTextColumn Binding="{Binding Path=Album}" Width="100" Header="Album"/> 
      <DataGridTextColumn Binding="{Binding Path=Bitrate}" Width="100" Header="Bitrate"/> 
      <DataGridTextColumn Binding="{Binding Path=Pfad}" Width="100" Header="Pfad"/> 
     </DataGrid.Columns> 
    </DataGrid> 

-Code-Behind:

Public Structure Austauscher 

    Dim files As New ObservableCollection(Of Austauscher) 

    Private _track As String 
    Private _image As BitmapImage 
    Private _album As String 
    Private _pfad As String 
    Private _bitrate As String 
    Private _endung As String 


    Property Track() As String 
     Get 
      Return _track 
     End Get 
     Set(ByVal Value As String) 
      _track = Value 
     End Set 
    End Property 
    Property Image As BitmapImage 
     Get 
      Return _image 
     End Get 
     Set(ByVal Value As BitmapImage) 
      _image = Value 
     End Set 
    End Property 
    Property Album() As String 
     Get 
      Return _album 
     End Get 
     Set(ByVal Value As String) 
      _album = Value 
     End Set 
    End Property 
    Public Property Pfad As String 
     Get 
      Return _pfad 
     End Get 
     Set(ByVal Value As String) 
      _pfad = Value 
     End Set 
    End Property 
    Property Bitrate As String 
     Get 
      Return _bitrate 
     End Get 
     Set(ByVal Value As String) 
      _bitrate = Value 
     End Set 
    End Property 
    Property Endung As String 
     Get 
      Return _endung 
     End Get 
     Set(ByVal Value As String) 
      _endung = Value 
     End Set 
    End Property 

End Structure 

Antwort

0

Zuerst müssen Sie tu offen de Event "Cellclick" auf Ihrem Datagridview und setzen de folgenden Code:

If (e.ColumnIndex <> -1) And (e.RowIndex <> -1) Then 
     Dim selectedCell as string = "" 
     selectedCell = myGridView.rows(e.rowIndex).cells("numberOfCell").valeu 
End If 
  • Wenn diese Antwort Ihnen hilft. Bitte markieren Sie dies bei der richtigen Antwort.
+0

Entschuldigung, aber ich finde kein CellClick-Ereignis in der WPF-Datagridview. – xxXTimXxx

+0

Doppelklicken Sie in das Datagrid und klicken Sie in das Drop-down-Menü, um das Ereignis auszuwählen, und wählen Sie cellClick –

+0

Nein, ich habe es bereits überprüft. In Windows Forms gibt es ein Ereignis namens CellClick, aber nicht in WPF. Sie können es auch hier überprüfen: [Microsoft Datagrid-Ereignis] (https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid_events (v = vs.110) .aspx) – xxXTimXxx