Wie lässt das WPF Datagrid eine Zelle auswählen, wenn Sie zum ersten Mal darauf zugreifen?

8

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%     
Frank Wallis 05.12.2011, 18:45
quelle

2 Antworten

4

Das kannst du so machen. Registrieren Sie sich für ein erhaltenes Fokusereignis und legen Sie dann die Originalquelle als ausgewähltes Element fest.

%Vor%

Dann im Code hinter der Datei:

%Vor%

Ich hoffe, es hilft!

    
GuruC 04.01.2012, 13:35
quelle
3

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.

    
user2559589 20.06.2014 19:22
quelle

Tags und Links