2016-08-02 33 views
0

Wenn ich ein Element im DataGrid auswähle, scheint es, dass ich die Auswahl nicht ändern kann. Ich könnte auf eine andere Reihe klicken, aber es wird nichts tun. Ich weiß das, weil, wenn die Aktion SelectionChanged für dieses Datagrid voller Kunden passiert, ich eine Popup-Box habe, die dort ihren Namen zeigt. Der Name ist immer derselbe. Hier ist die C# -CodeDataGrid zum Ändern des ausgewählten Elements veranlassen

priavate void dataGridCustomers_SelectionChanged(object sender, SelectionChangedEventArgs) 
{ 
    Customer selectedCustomer = (Customer) dataGridCustomers.SelectedItem; 
    MessageBox.Show(selectedCustomer.FirstName); 
} 

ich es möchte, so dass jedes Mal, wenn ich eine Zeile auszuwählen, das ist das ausgewählte Element

Antwort

0

Mit Bezug auf die Definition unten, ich glaube, Sie versuchen, die ausgewählt referenzieren Element, bevor es tatsächlich gesetzt wurde.

https://msdn.microsoft.com/en-us/library/system.windows.controls.selectionchangedeventargs(v=vs.110).aspx

So etwas sollte es tun:

private void dataGridCustomers_SelectionChanged(object sender, SelectionChangedEventArgs args) 
{ 
    if (args.AddedItems.Length > 0) 
    { 
     Customer selectedCustomer = (Customer) args.AddedItems[0]; 
     MessageBox.Show(selectedCustomer.FirstName); 
    } 
} 
+0

Manchmal sagt es das ausgewählte Element null ist, warum sollte das sein? –

+1

SelectedItem ist das Element, das im Raster ausgewählt ist. In diesem Ereignishandler wird das SelectedItem nur festgelegt, nachdem das sectionChanged-Ereignis ausgeführt wurde. Wenn also zunächst kein SelectedItem (null) vorhanden war und Sie versucht haben, es in der obigen Methode zu überprüfen, wäre es null, weil es noch nicht festgelegt wurde. – onemorecupofcoffee

+1

Das ist, warum Sie die args.AddedItems verwenden müssen - das sind die Elemente, die der Auswahl hinzugefügt werden, nachdem der Ereignishandler (SelectionChanged) ausgelöst wird – onemorecupofcoffee