| 

.NET C# Java Javascript Exception

2
Ich suche ein Event wie: "ValueChanged" oder "CellValueChanged"
Es gibt "BeginningEdit". Dieses Event wird gefeuert, sobald eine Zelle zum Editieren aktiviert wird. Das ist nicht das was ich suche. Das Event soll nur gefeuert werden, wenn der Inhalt sich ändert.
"KeyUp" ist auch nicht die Lösung, da sich der Inhalt über eine Template-Column z.B. durch ein TimePicker ändern kann.
02.03.2011
Jürgen Luhr 6,9k 1 8
Ich kann leider auch nichts finden. Wird SelectionChanged nicht gefeuert? Was mir dann spontan einfallen würde, im Falle du findest kein Event dafür, dass du dir den Inhalt bei BeginningEdit merkst und im Event CellEditEnded den gemerkten Inhalt mit dem neuen Inhalt vergleichst.
Mario Priebe 02.03.2011
vergiss das mit SelectionChanged :)
Mario Priebe 02.03.2011
2 Antworten
0
Das DataGrid von Silverlight besitzt die Events CellEditEnding und RowEditEnding besitzen, damit dürftest du das Problem lösen :-)
02.03.2011
Konstantin 3,7k 7
Wird das nicht erst ausgelöst, wenn der EditModus beendet wird? (Ich kann es leider erst morgen prüfen.)
Ich brauche ein Event, das gefeuert wird, wenn in einem Textfeld editiert wird. Also bei jedem Zeichen, das eingegeben wird. Aber wie schon beschrieben handelt es sich nicht nur um Textfelder.
Jürgen Luhr 02.03.2011
Ach so, dann hab ich es wohl überlesen, sorry. Ich schau es mir morgen mal genauer an =)
Konstantin 02.03.2011
Wäre das für dich evtl. eine Alternative? http://blog.spencen.com/2009/04/25/readonly-rows-and-cells-in-a-datagrid.aspx - Schau dir mal die Methode OnNotifyRowAndCellsPropertyChanged an. Evtl. kannst du dir was eigenes basteln.
Konstantin 03.03.2011
0
Nun kann ich auf meine eigene Frage antworten.
Das passende Event scheint es nicht zu geben. Das DataGrid ist ziemlich mager bestückt.
Ich habe auch nicht herausgefunden, wie ich Einfluss auf eine Zelle im EditModus nehmen kann, wie z.B. Selektieren des Textes oder Positionieren des Cursors.
Daher habe ich mich entschlossen ein DataTemplate mit einem UserControl zu verwenden, das wiederum eine normale TextBox beinhaltet. Somit habe ich die Möglichkeit jedes Event der TextBox weiterzureichen. In meinem Fall ist es das "TextChanged"-Event.
Für alle anderen Datentypen außer Text (numerisch, Datum, Zeit, ...) verwende ich bereits DataTemplates.
Jedes DataTemplate muss nun ein "Changed"-Event weiterreichen. Damit wird das ViewModel informiert, wenn sich im DataGrid Dateninhalte ändern.
Die DataTemplates erfordern zwar einen höheren Programmieraufwand, aber ein hohes Maß an Flexibilität.
Vielen Dank an Mario und Konstantin. Auch wenn eure Antworten nicht direkt eine Lösung brachten, so wusste ich doch, dass es nicht auf die einfache Art geht und ich nicht nur ein Event übersehen hatte.
03.03.2011
Jürgen Luhr 6,9k 1 8

Stelle deine .net-Frage jetzt!