| 

.NET C# Java Javascript Exception

3
Hallo,
wir haben folgendes Problem:
Wir möchten in einem DataGrid die Änderung einzelner Werte bereits nach dem verlassen der Zelle in unser ViewModel commiten ( mittels datagrid.CommitEdit(); im DataGrid_CurrentCellChanged Event)
Das funktioniert auch soweit ganz gut. Problem ist jetzt allerdings, dass der Focus verloren geht. Der Benutzer kann nicht direkt im Datagrid weiter arbeiten ohne selber wieder eine Zelle zu markieren.
Im Standardverhalten (auto Commit wenn Zeile verlassen wird) bleibt der Focus erhalten.

Wie kann ich nach dem manuellem CommitEdit Aufruf den Focus wieder auf meine gewünschte Zelle setzten?

Wir haben schon viel gegoogelt und einige Varianten getestet. Es war aber nichts brauchbares dabei.

Danke.
30.08.2013
mrmee 745 1 8
1 Antwort
1
Kannst Du es nicht auf Ebene des Bindings der einzelnen Zelle mit UpdateSourceTrigger.LostFocus lösen?
So z.B.:
<DataGridTextColumn Binding="{Binding MyValue, UpdateSourceTrigger=LostFocus}" />
30.08.2013
ffordermaier 8,4k 3 9
Mit UpdateSourceTrigger=LostFocus werden die Werte ins Viewmodel übernommen. Die Abhängigen Zellen bekommen die Änderung allerdings erst mit wenn diese den Focus erhalten. Gibt es irgendwie die Möglichkeit mein Datagrid zu refreshen?
mrmee 30.08.2013
Implementierst Du denn im Zeilen-ViewModel das Interface INotifyPropertyChanged und löst ein PropertyChanged-Event aus (auch für abhängige Properties!)?
ffordermaier 30.08.2013
Mein ViewModel wird vom CSLA-Framework erzeugt. Da hab ich leider nicht die Möglichkeit ein PropertyChanged Event auszulösen (bzw. weiß ich nicht wie).
mrmee 30.08.2013
1
Damit kenn ich mich nicht aus, aber vlr. hilft Dir das weiter:
http://forums.lhotka.net/forums/p/10206/47862.aspx#47862
ffordermaier 30.08.2013
Das mit dem PropertyChanged Event überschreiben klappt. Allerdings verleirt das Datagrid dann wieder den Focus. :(
mrmee 30.08.2013
Ok, schade. So aus der Ferne ohne Einsicht in den Code sind meine Ideen dann leider erschöpft. Wenn mir noch was einfällt, meld ich mich.
ffordermaier 30.08.2013
Kein Problem aber danke für die schnelle Hilfe bzw. Denkanstöße
mrmee 30.08.2013

Stelle deine .net-Frage jetzt!