Wie programmgesteuert eine Zeile oder eine Zelle in WPF DataGrid auswählen?

8

In WinForm DataGridView wird bei der Initialisierung automatisch die erste Zeile ausgewählt. Es hat mich verrückt gemacht, als ich versuchte, diese Funktion auszuschalten. Bei der Umstellung auf WPF DataGrid scheint Microsoft diese Funktion deaktiviert zu haben. Das ist gut, denke ich. Ich habe jedoch Schwierigkeiten, diese Funktion jetzt zu aktivieren. Bei einigen DataGrids möchte ich, dass die erste Zeile automatisch ausgewählt wird, nachdem das Raster durch die Datenbindung gefüllt wurde. Es gibt einige Vorschläge im Internet, aber ich konnte diese Arbeit nicht machen. Ich hoffe auf mehr Glück hier.

    
newman 01.10.2010, 02:36
quelle

4 Antworten

9

Setze IsSynchronizedWithCurrentItem = "true" .

BEARBEITEN:

Um Ihren Kommentar zu adressieren, nehme ich an, dass die SelectionUnit Ihres DataGrids auf "Cell" gesetzt ist, oder? Okay, ich bin mir nicht sicher, ob dies die beste Lösung ist, aber Sie können das Loaded-Ereignis für das DataGrid behandeln und die ausgewählte Zelle im Code-Behind manuell festlegen. Du wirst also so etwas haben:

%Vor%

Ereignis-Handler:

%Vor%

Beachten Sie, dass dies nur funktioniert, wenn die DataGrid.SelectionUnit auf "Cell" festgelegt ist. Ansonsten glaube ich, dass es eine Ausnahme auslösen wird.

EDIT2:

XAML:

%Vor%

Code-Behind:

%Vor%     
ASanch 01.10.2010 02:41
quelle
3
___ qstntxt ___

In WinForm DataGridView wird bei der Initialisierung automatisch die erste Zeile ausgewählt. Es hat mich verrückt gemacht, als ich versuchte, diese Funktion auszuschalten. Bei der Umstellung auf WPF DataGrid scheint Microsoft diese Funktion deaktiviert zu haben. Das ist gut, denke ich. Ich habe jedoch Schwierigkeiten, diese Funktion jetzt zu aktivieren. Bei einigen DataGrids möchte ich, dass die erste Zeile automatisch ausgewählt wird, nachdem das Raster durch die Datenbindung gefüllt wurde. Es gibt einige Vorschläge im Internet, aber ich konnte diese Arbeit nicht machen. Ich hoffe auf mehr Glück hier.

    
___ qstnhdr ___ Wie programmgesteuert eine Zeile oder eine Zelle in WPF DataGrid auswählen? ___ answer3836212 ___

Setze %code% .

BEARBEITEN:

Um Ihren Kommentar zu adressieren, nehme ich an, dass die SelectionUnit Ihres DataGrids auf "Cell" gesetzt ist, oder? Okay, ich bin mir nicht sicher, ob dies die beste Lösung ist, aber Sie können das Loaded-Ereignis für das DataGrid behandeln und die ausgewählte Zelle im Code-Behind manuell festlegen. Du wirst also so etwas haben:

%Vor%

Ereignis-Handler:

%Vor%

Beachten Sie, dass dies nur funktioniert, wenn die DataGrid.SelectionUnit auf "Cell" festgelegt ist. Ansonsten glaube ich, dass es eine Ausnahme auslösen wird.

EDIT2:

XAML:

%Vor%

Code-Behind:

%Vor%     
___ answer3836520 ___

Du könntest das versuchen.

%Vor%     
___ tag123wpf ___ Windows Presentation Foundation oder WPF ist ein Subsystem zum Rendern von Benutzeroberflächen in Windows-basierten Anwendungen. ___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ antwort4320568 ___

Sie können dies im DataGrid.Loaded-Ereignis konsistent durchführen. Beziehen Sie einfach die erste Zeile und lassen Sie die Zeile das Auswahlereignis auslösen.

%Vor%

Ich bin mir nicht sicher, ob das ein Fehler ist, weil Sie nicht garantieren können, dass Auswahlereignisse von Ihrem Objekt ausgelöst werden, bis das Steuerelement geladen ist. Weiß nicht.

    
___ tag123datagrid ___ Ein grafisches Element der Benutzeroberfläche, das eine tabellarische Ansicht der Daten darstellt. ___ tag123select ___ Select ist ein allgemeines Schlüsselwort zum Abfragen von Daten. 'select ()' ist auch eine Programmierfunktion zum Auslösen von Code basierend auf Dateihandle oder anderer Systemaktivität. Nicht mit dem HTML-Tag "select" verwechseln, verwenden Sie [html-select] dafür. ___ tag123row ___ Eine horizontale Linie von Zellen in einer Kalkulationstabelle, SQL-Tabelle, HTML-Tabelle oder einer ähnlichen Struktur. ___ answer3848556 ___

Ich freue mich, Ihnen mitteilen zu können, dass ich eine Lösung für dieses Problem durch %code% event gefunden habe.

%Vor%

Es sieht aus, wenn dieses Ereignis mit Status ContainersGenerated ausgelöst wird, DataGrid ist vollständig initialisiert. Für mich ähnelt dies eher DataGridViews DataBindingComplete-Ereignis in WinForm. Wenn ja, sollte das Ereignis " %code% " wirklich " %code% " genannt werden.

Dies wurde von einem Beitrag inspiriert hier Ich habe zufällig gefunden, während ich nach einem anderen Hinweis suche.

    
___
aappddeevv 01.12.2010 01:58
quelle
1

Ich freue mich, Ihnen mitteilen zu können, dass ich eine Lösung für dieses Problem durch ItemContainerGenerator.StatusChanged event gefunden habe.

%Vor%

Es sieht aus, wenn dieses Ereignis mit Status ContainersGenerated ausgelöst wird, DataGrid ist vollständig initialisiert. Für mich ähnelt dies eher DataGridViews DataBindingComplete-Ereignis in WinForm. Wenn ja, sollte das Ereignis " DataContextChanged " wirklich " DataContextChanging " genannt werden.

Dies wurde von einem Beitrag inspiriert hier Ich habe zufällig gefunden, während ich nach einem anderen Hinweis suche.

    
newman 03.10.2010 04:11
quelle
0

Du könntest das versuchen.

%Vor%     
Prince Ashitaka 01.10.2010 04:21
quelle

Tags und Links