Quiero ser capaz de elegir una celda específica en un DataGrid de Silverlight 3.0 y ponerla en modo de edición. Puedo usar el VisualTreeManager para ubicar la celda. ¿Cómo cambio al modo de edición?¿Cómo puedo colocar un DataGridCell de Silverlight 3 en modo de edición en el código?
Cada DataGridCell es la siguiente con el 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
con TextBlock que contiene el texto que desea editar.
actualización
Siguiendo la sugerencia @AnthonyWJones', así es como he tratado de hacer esto utilizando BeginEdit().
Quería hacerlo simple, así que pensé que elegiría una columna en la primera fila. ¡Incluso eso probó más allá de mi conocimiento de SL! Al final, me sale la primera fila mediante la creación de un campo llamado FIRSTROW para sostenerlo:
private DataGridRow firstRow;
añade un manejador LoadingRow a la cuadrícula de datos:
LoadingRow="computersDataGrid_LoadingRow"
y
private void computersDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
if (this.firstRow == null)
this.firstRow = e.Row;
}
y luego agregar un botón al panel para activar la edición:
private void Button_Click(object sender, RoutedEventArgs e)
{
this.dataGrid.SelectedItem = this.firstRow;
this.dataGrid.CurrentColumn = this.dataGrid.Columns[4];
this.dataGrid.BeginEdit();
}
Hago clic en el botón y se selecciona la celda correcta pero no se edita en la celda. Se necesita un clic manual para lograrlo.
que había sido llevado por este camino por otra persona. Voy a probar lo que has sugerido y dejarte saber. Gracias. – ssg31415926
He intentado ambas sugerencias sin éxito. Primero, el enfoque "estándar". El uso de SelectedItem y CurrentColumn hace que la celda se resalte, pero agregar BeginEdit() no tiene ningún efecto. La celda no obtiene el foco y no entra en modo de edición. El uso de VisualStateManager tampoco funcionó. – ssg31415926
@ ssg31415926 Sospeché que el primer enfoque no funcionaría, me sorprende que el segundo no lo haya hecho, ¿puede editar su pregunta para incluir una pequeña cantidad de código relevante que describa cómo lo ha intentado? – AnthonyWJones