Entwickler-Ecke
WPF / Silverlight - Delegates und Events Problem
ticcoid - Di 14.04.09 16:59
Titel: Delegates und Events Problem
hallo,
ich habe folgendes vor. ich habe in silverlight ein datagrid und habe dazu ein event (PreparingCellForEdit) das gefeuert wird sobald ich eine zelle bearbeiten will. wenn das passiert ist dann wird anschließend ein zweites event gefeuert (LostFocus). ich möchte eigentlich "nur" folgendes erreichen.
das object sender was im event PreparingCellForEdit will ich auch im event LostFocus haben. wie genau stelle ich das an, dass es da ist? ich müsste das doch irgenwie mit einem delegaten hinkriegen oder? Hat jemand eine Idee?
Vielen Dank
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void datagrid1_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e) { datagrid1.LostFocus += new RoutedEventHandler(datagrid1_LostFocus); }
void datagrid1_LostFocus(object sender, RoutedEventArgs e) { } |
Moderiert von Christian S.: C#-Tags hinzugefügt
Kha - Mi 15.04.09 11:09
:welcome:
Hört sich so an, als ob das normalerweise auch ohne so einen Hack funktionieren sollte ;) .
Ich würde jedenfalls im Prepare-Eventhandler einem Klassenfeld den sender-Parameter zuweisen. Im LostFocus liest du dann dieses Feld aus und setzt es am Schluss auf null, damit jeder sender nur genau einmal verarbeitet wird.
_Joe_ - Sa 16.05.09 12:06
so sollte es klappen, wenn es überhaupt noch aktuell ist
Kha - Sa 16.05.09 13:08
Was hat denn der Dispatcher mit der Frage zu tun? Und auf den PreparingCellForEdit-Sender hast du so immer noch keinen Zugriff.
Wollte man es
unbedingt mit Closures machen, dann am ehesten so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| private void datagrid1_PreparingCellForEdit(object sender, DataGridPreparingCellForEditEventArgs e) { RoutedEventHandler handler = null; handler = delegate { datagrid1.LostFocus -= handler; }; datagrid1.LostFocus += handler; } |
Naja, hab schon hübscheren Code gesehen ;) .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!