Jak mogę umieścić kod Silverlight 3 DataGridCell w trybie edycji?
Chcę mieć możliwość wybrania konkretnej komórki w Silverlight 3.0 DataGrid i wprowadzenia jej do trybu edycji. Mogę użyć VisualTreeManager do zlokalizowania komórki. Jak przejść do trybu edycji?
Każda DataGridCell wygląda tak w VisualTreeManager:
System.Windows.Controls.DataGridCell
System.Windows.Controls.Grid
System.Windows.Shapes.Rectangle
System.Windows.Controls.ContentPresenter
System.Windows.Controls.TextBlock
System.Windows.Shapes.Rectangle
System.Windows.Shapes.Rectangle
z TextBlock zawierającym tekst, który chcę edytować.
Aktualizacja
Podążając za sugestią @AnthonyWJones, oto jak próbowałem to zrobić za pomocą BeginEdit ().
Chciałem zachować prostotę, więc pomyślałem, że wybiorę kolumnę w pierwszym rzędzie. Nawet to okazało się poza moją wiedzą SL! W końcu otrzymuję pierwszy wiersz, tworząc pole o nazwie firstRow, aby go zatrzymać:
private DataGridRow firstRow;
dodano obsługę ładowania LoadingRow do siatki danych:
LoadingRow="computersDataGrid_LoadingRow"
i
private void computersDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
if (this.firstRow == null)
this.firstRow = e.Row;
}
a następnie dodawanie przycisku do panelu w celu wywołania edycji:
private void Button_Click(object sender, RoutedEventArgs e)
{
this.dataGrid.SelectedItem = this.firstRow;
this.dataGrid.CurrentColumn = this.dataGrid.Columns[4];
this.dataGrid.BeginEdit();
}
Klikam przycisk, a właściwa komórka jest zaznaczona, ale nie przechodzi do edycji w komórce. Aby to osiągnąć, trzeba ręcznie kliknąć.