Ich habe den folgenden (vereinfachten) Stil:
%Vor%Wenn ich es als ElementStyle UND EditingElementStyle in meiner DataGridCheckBoxColumn verwende:
%Vor% Dann schaltet meine Bindung, IsEnabled
, nicht um, wenn ich das Kontrollkästchen einer Zeile an / abchecke. Wenn ich entweder ElementStyle, EditingElementStyle oder beides entferne, wird die Bindung nicht aktualisiert. Warum ist das?!
Außerdem habe ich versucht, das Problem mit dem folgenden Code zu umgehen:
%Vor%Das Problem bleibt jedoch bestehen.
Zuerst Ihre Behauptung, dass, wenn Sie entweder ElementStyle
oder EditingElementStyle
das Problem lösen, nicht korrekt sind, was Sie umdreht, ist ElementStyle
.
Die Sache ist, dass für die Bearbeitung das Datenraster zur Bearbeitungsvorlage wechseln muss, was normalerweise mit einem Mausklick geschieht, da aber das CheckBox
das Mausklick-Ereignis behandelt, wird das Datenraster nie kommen Es geht nicht in den Bearbeitungsmodus und verhindert, dass Ihre Änderung jemals Ihre Datenobjekte erreicht (sie bleibt innerhalb der Datenansicht, wird aber nicht an die Quelldaten übergeben).
Nun fragen Sie sich vielleicht, wie ist das Standardverhalten in Ordnung? Wenn Sie sich den Standardwert der Eigenschaft ElementStyle
ansehen, werden Sie feststellen, dass sowohl IsHitTestVisible
als auch Focusable
auf false gesetzt sind. Dies verhindert, dass CheckBox
den Mausklick (oder das Tastaturereignis) verarbeitet, der seinen Status ändert, und ermöglicht dem Datengrid, sie zu empfangen, wodurch er in den Bearbeitungsmodus wechseln und zu EditingElementStyle
wechseln kann, was nicht der Fall ist Einfluss auf die Fokussierbarkeit und die Treffertestbarkeit.
Sehen Sie sich diesen Blogeintrag an, um ein Beispiel dafür zu finden, wie man das richtig macht
Entschuldigung für den Necro, aber ich denke, dass ich hier auf Stack Overflow eine bessere Lösung gefunden habe, die Leuten helfen könnte, auf dieser Seite nach einer Lösung zu suchen.
%Vor%Ich habe es versucht und es hat perfekt für mich funktioniert, einfacher als die akzeptierte Lösung und beseitigt auch die Notwendigkeit für zusätzliche Klicks auf die Checkboxen.