2011-01-06 12 views
0

Ich habe eine ListView an XML gebunden. Die XAML sieht wie folgt aus:C# wpf Zugriffswert in Spalte der Listenansicht

<ListView Name="patientsListView" ItemsSource="{Binding}" SelectionChanged="patientsListView_SelectionChanged"> 
    <ListView.View> 
     <GridView x:Name="patientGrid"> 
      <GridViewColumn Header="PatientName" Width="Auto" DisplayMemberBinding="{Binding XPath=PatientName}" /> 
      <GridViewColumn Header="PatientAccountNumber" Width="Auto" DisplayMemberBinding="{Binding XPath=PatientAccountNumber}" /> 
      <GridViewColumn Header="DateOfBirth" Width="Auto" DisplayMemberBinding="{Binding XPath=DateOfBirth}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

Wenn eine Zeile geklickt wird, möchte ich etwas tun:

private void patientsListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
     //do stuff 
     MessageBox.Show(); 
     } 

Wenn ich auf eine Zeile klicken, wie greife ich auf einen Wert in einer Spalte einzeln? Beim Debuggen kann ich in Locals in der Listenansicht SelectedItems sehen, dass sich meine Daten im InnerText in der Ergebnisansicht für einen beliebigen Index befinden, aber ich weiß nicht, wie ich den Wert im Code ermitteln kann.

Antwort

1
var patient = ((ListViewItem) sender).Content as Patient; //or whatever object type 

Von dort können Sie patient.PatientName bekommen, etc

[EDIT] Nun, da ich es sehe, ich bin nicht 100% sicher, dass dies innerhalb einer selection Veranstaltung arbeiten. Aber es wird bei einem Klick-Ereignis funktionieren.

aber wenn Sie nur einen anderen Teil der Benutzeroberfläche zu aktualisieren versuchen, können Sie etwas tun:

<TextBlock Text="{Binding SelectedItem.PatientName,ElementName='patientGrid'}"/> 
+0

Dank wünschen! Nicht genau die Antwort, die ich suchte, aber dein letzter Kommentar löste einen Gedanken aus, der meine UI aktualisiert ... und ich musste IsSynchronizedWithCurrentItem = "True" zu meiner ListView hinzufügen. – CraigV

+0

@CraigV Ich bin froh, dass ich ein bisschen helfen konnte :) – NickAldwin

1

im Debug-Modus die Art der listview.SelectedItems erfahren, als sie konvertieren in dass Typ

var item = (ItemType)listview.SelectedItems 

als Sie Wert erhalten können Sie dieses

item.PatientName 
Verwandte Themen