Wenn ich in das WPF-Datagrid eindringe, wird die erste Zelle (mit einem Rechteck) fokussiert, aber nicht ausgewählt (in blau). Wenn ich erneut auf die Tabulatortaste drücke, wird fokussiert und ausgewählt.
Ich denke, die DataGridCell hat tatsächlich IsSelected = true, aber es wird nicht blau dargestellt. Ich habe versucht, mit den Datagrid- und Visual-States herumzuhacken, aber ich kann es nicht machen, das Raster korrekt neu zu streichen, wenn Sie das erste Mal einrasten.
Hat jemand das schon einmal gesehen und haben Sie eine Lösung?
Code zu reproduzieren:
MainWindow.xaml
%Vor%MainWindow.xaml.cs
%Vor%Klicken Sie auf das Textfeld, dann drücken Sie den Tab --- Zelle 1 ist nicht ausgewählt
hit Tab erneut --- Zelle 2 ist ausgewählt
Jede Hilfe wird sehr geschätzt, danke.
Aktualisierung:
Wenn SelectionUnit = FullRow, habe ich einige Erfolge entlang der unten gezeigten Zeilen gehabt, wenn SelectedIndex auf 0 gesetzt wird, wenn die erste Zeile erstellt wird ist jetzt blau markiert. Es braucht noch etwas Arbeit, um mit Shift-Tab etc. fertig zu werden. Es gibt aber immer noch ein Problem, denn wenn ich den SelectionMode in Extended ändere und Shift-Down-Pfeil drücke, wird die zweite Zeile ausgewählt, aber die erste Zeile wird nicht selektiert (beide sollten ausgewählt werden) . Wenn ich es nochmal mache, werden die Zeilen 2 + 3 ausgewählt, was korrekt ist und danach weiter funktioniert.
%Vor%Weitere Aktualisierung:
Dieser Fehler wurde behoben, indem das private _selectionAnchor-Feld gesetzt wurde. (Danke ILSpy)
%Vor%Ich weiß, dass meine Antwort zu spät ist, aber es würde anderen helfen, zu dieser Seite zu navigieren.
Nach vielen Recherchen habe ich die Antwort bekommen, wie man das Element beim Tabbing auswählt. Es war wirklich einfach und war eine einzige Codezeile in XAML, die den Trick gemacht hat;
%Vor% Wenn Sie IsTabStop
auf false setzen, sagen Sie dem visuellen Baum der Datagridcell, in seine Vorlage zu gehen und jedes fokussierbare Element zu finden. Wenn es ein Element findet, fokussiert es dieses Element.