Ich kann eine Zelle in meinem Datagrid mit dem folgenden Code einfach programmgesteuert markieren:
DataGrid1.ScrollIntoView(DataGrid1.Items[Rowindex]);
DataGrid1.Focus();
DataGrid1.CurrentCell = new DataGridCellInfo(DataGrid1.Items[Rowindex], DataGrid1.Columns[Columnindex]);
DataGrid1.SelectedCells.Clear();
DataGrid1.SelectedCells.Add(DataGrid1.CurrentCell);
Das funktioniert allerdings erst, nachdem ich mein Programm einmal gestartet habe und das Datagrid vollständig geladen ist. Ich versuche jedoch, das Scrollen und Hervorheben beim ersten Start durchzuführen. Mein Methodenaufruf sieht so aus:
public DataBaseWindow()
{
InitializeComponent();
// Here i do some other Stuff.
jump_to_cell();
}
public void jump_to_cell()
{
DataGrid1.ScrollIntoView(DataGrid1.Items[Rowindex]);
DataGrid1.Focus();
DataGrid1.CurrentCell = new DataGridCellInfo(DataGrid1.Items[Rowindex], DataGrid1.Columns[Columnindex]);
DataGrid1.SelectedCells.Clear();
DataGrid1.SelectedCells.Add(DataGrid1.CurrentCell);
}
Wenn ich eine Zelle programmgesteuert auswähle, wird die Auswahl hervorgehoben. Allerdings nicht, wenn ich das Programm zum ersten Mal starte. Dann passiert leider nichts.
Lösung des Problems
Sie können auch die WindowLoaded- oder ContentRendered-Ereignisse verwenden.
<Window...
ContentRendered="Window_ContentRendered">
private void Window_ContentRendered(object sender, RoutedEventArgs e)
{
//do something
}
Keine Kommentare:
Kommentar veröffentlichen