Desidero poter selezionare una cella specifica in un DataGrid di Silverlight 3.0 e metterla in modalità di modifica. Posso usare VisualTreeManager per localizzare la cella. Come posso passare alla modalità di modifica?Come posso inserire Silverlight 3 DataGridCell in modalità di modifica nel codice?
Ogni DataGridCell assomiglia a questo nel 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 contenente il testo che voglio modificare.
Aggiornamento
Seguendo il suggerimento @AnthonyWJones', ecco come ho cercato di farlo usando BeginEdit().
Volevo semplificarlo, quindi ho pensato di scegliere una colonna nella prima riga. Anche quello si è rivelato al di fuori della mia conoscenza di SL! Alla fine, ottengo la prima fila creando un campo denominato firstRow tenerlo:
private DataGridRow firstRow;
aggiunto un gestore LoadingRow alla griglia dati:
LoadingRow="computersDataGrid_LoadingRow"
e
private void computersDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
if (this.firstRow == null)
this.firstRow = e.Row;
}
e quindi aggiungendo un pulsante al pannello per attivare la modifica:
private void Button_Click(object sender, RoutedEventArgs e)
{
this.dataGrid.SelectedItem = this.firstRow;
this.dataGrid.CurrentColumn = this.dataGrid.Columns[4];
this.dataGrid.BeginEdit();
}
Faccio clic sul pulsante e la cella corretta è selezionata ma non entra in modifica nella cella. Ci vuole un clic del manuale per raggiungere questo obiettivo.
mi era stato portato su questa strada da qualcun altro. Proverò ciò che hai suggerito e ti faccio sapere. Grazie. – ssg31415926
Ho provato entrambi i vostri suggerimenti senza successo. Innanzitutto, l'approccio "standard". L'utilizzo di SelectedItem e CurrentColumn determina l'evidenziazione della cella ma l'aggiunta di BeginEdit() non ha alcun effetto. La cella non ottiene la messa a fuoco e non entra in modalità di modifica. Anche l'uso di VisualStateManager non ha funzionato. – ssg31415926
@ ssg31415926 Avevo il sospetto che il primo approccio non avrebbe funzionato, sono sorpreso che il secondo non abbia però, puoi modificare la tua domanda per includere una piccola quantità di codice rilevante che descrive come l'hai provato? – AnthonyWJones