Ich verwende Wpf Toolkit DataGrid. Immer wenn ich Itemsource zuweisen, wird das erste Element ausgewählt und das selectionChanged-Ereignis wird aufgerufen. Wie kann ich verhindern, dass standardmäßig eine Zeile ausgewählt wird?Stop Datagrid erste Zeile standardmäßig auswählen
Antwort
Überprüfen Sie, ob Sie IsSynchronizedWithCurrentItem="True"
eingestellt haben und Sie möchten, dass sie gleich eingestellt sind?
<DataGrid IsSynchronizedWithCurrentItem="True" ...
Wenn diese Eigenschaft auf true gesetzt ist, ist die Auswahl des ersten Elements das Standardverhalten.
Wahrscheinlich ist Ihr DataGrid an eine Sammlung wie PagedCollectionView gebunden, die über eine CurrentItem-Eigenschaft verfügt. Diese Eigenschaft wird automatisch mit der ausgewählten Zeile in beide Richtungen synchronisiert. Die Lösung wäre, CurrentItem auf null zu setzen. Sie können es wie folgt tun:
PagedCollectionView pcv = new PagedCollectionView(collection);
pcv.MoveCurrentTo(null);
dataGrid.ItemsSource = pcv;
Das in Silverlight besonders hilfreich ist, die keine DataGrid.IsSynchronizedWithCurrentItem Eigenschaft hat ...
+1 Ich verbrachte eine lange Zeit mit diesem Problem, und das war die Lösung. :) –
Dies sollte die Antwort sein, wenn Sie die Synchronisierung zwischen der CollectionViewSource und der Ansicht beibehalten müssen. –
Ich habe versucht, eine Reihe von verschiedenen Dingen, aber was für mich gearbeitet wurde um das erste Auswahlereignis zu erfassen und rückgängig zu machen, indem alle auf dem Datagrid deaktiviert werden.
Hier ist der Code, um diese Arbeit zu machen, ich hoffe, es jemand anderem vorteilhaft ist :)
/* Add this inside your window constructor */
this.myDataGrid.SelectionChanged += myDataGrid_SelectionChanged;
/* Add a private boolean variable for saving the suppression flag */
private bool _myDataGrid_suppressed_flag = false;
/* Add the selection changed event handler */
void myDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
/* I check the sender type just in case */
if (sender is System.Windows.Controls.DataGrid)
{
System.Windows.Controls.DataGrid _dg = (System.Windows.Controls.DataGrid)sender;
/* If the current item is null, this is the initial selection event */
if (_dg.CurrentItem == null)
{
if (!_myDataGrid_suppressed_flag)
{
/* Set your suppressed flat */
_dgRateList_suppressed_flag = true;
/* Unselect all */
/* This will trigger another changed event where CurrentItem == null */
_dg.UnselectAll();
e.Handled = true;
return;
}
}
else
{
/* This is a legitimate selection changed due to user interaction */
}
}
}
Antwort der HCL ist richtig, aber für die schnelle und lose Leser wie mich, es erwies sich als verwirrend und ich landete verbringe noch etwas Zeit damit, andere Dinge zu erforschen, bevor du hierher zurückkommst und aufmerksam liest.
Ist das Bit, das wir interessieren, nicht sein Antagonist!
Um einen Wert von mir hinzuzufügen: die Eigenschaft IsSynchronizedWithCurrentItem=True
bedeutet, dass das Gitter CurrentItem
mit dem aktuellen Artikel der Sammlung synchronisiert wird. Einstellung IsSynchronizedWithCurrentItem=False
ist, was wir hier wollen.
Für Datengitter des Xceed (wie ich in diesem Fall war), wird feststellen, dass SynchronizeCurrent=False
- 1. AspxGridView standardmäßig fokussierte Zeile
- 2. WPF DataGrid: Abbrechen der ersten Zeilenauswahl standardmäßig
- 3. Silverlight Datagrid bei Rechtsklick auswählen
- 4. WPFToolkit Datagrid - ScrollIntoView sollte als erste Zeile markiert und zeigt
- 5. selectpicker mit allen standardmäßig auswählen
- 6. Niedrigsten Wert auswählen und nur die erste Zeile zurückgeben
- 7. erste sichtbare Zeile nach Filter auswählen ui-grid
- 8. Nur die erste Zeile von der Ausgabe auswählen
- 9. IntelliJ, erste Datenzeilenansicht auswählen
- 10. Programmgesteuertes Auswählen von Zeilen in vb6 Datagrid
- 11. Wie programmgesteuert eine Zeile oder eine Zelle in WPF DataGrid auswählen?
- 12. datatables.net erste Zeile in initComplete auswählen wählt falsche Zeile mit Standardsortierung
- 13. DatagridView Letzte Zeile auswählen
- 14. asp.net gridview - Zeile auswählen
- 15. jqgrid überschreiben Zeile auswählen
- 16. DataTable gefilterte Zeile auswählen
- 17. DataGrid Zeile Virtualisierung Anzeige Problem
- 18. WPF DataGrid markieren gesamte Zeile
- 19. Wpf DataGrid neue Zeile hinzufügen
- 20. Anzeige Zeile Details wie Datagrid
- 21. WPF DataGrid: Leere Zeile fehlt
- 22. Auswählen mehrerer Zellen in Silverlight 4 Datagrid
- 23. Html mehrere ausgewählte Dropdown erste Element standardmäßig ausgewählt zeigt
- 24. Standardmäßig im Vollbildmodus oder Benutzer standardmäßig beim ersten Start auswählen können?
- 25. Zeile in einem Silverlight DataGrid automatisch bearbeiten
- 26. Erste Zeile mit JSoup
- 27. csv.reader vermisst erste Zeile
- 28. Textarea erste Zeile fett
- 29. BufferedReader überspringen erste Zeile
- 30. Klare erste Zeile jtexttarea
Haben Sie die 'SelectedIndex' Eigenschaft auf -1 vor/nach dem Einstellen der' ItemSource' Einstellung versuchen sein? –