Nel mio Windows Phone 7 App ho una casella di testo a riga singola. Quando l'utente preme {INVIO}, voglio accettare il valore della casella di testo e riportare la casella di testo nella normale modalità non edit.Esiste un modo per annullare a livello di codice la modifica di una casella di testo?
Fondamentalmente, esiste un modo per annullare a livello di codice la modifica di una casella di testo?
Ho provato a forzare il Visual State Manager in modalità Normale che cambia lo stile visivo, ma la casella di testo è ancora in modalità di modifica e la tastiera su schermo continua a essere visualizzata.
VisualStateManager.GoToState(
this.MyTextBox,
"Normal",
true);
VisualStateManager.GoToState(
this.MyTextBox,
"Unfocused",
true);
Anche provato a selezionare a livello di codice un controllo genitore ma quello non sembra funzionare neanche.
Penso che mi debba mancare qualcosa di semplice, qualcuno deve averlo fatto un milione di volte - qualsiasi aiuto molto apprezzato.
Grazie,
Aggiornamento: Ho provato a impostare lo stato attivo a un altro controllo, ma che non funzionava, la tastiera SIP non avrebbero mai scomparire.
Ma l'ho capito usando un altro metodo. Il trucco era usare la bandiera IsReadOnly. Quando si è smarrito il focus o si è premuto enter, ho impostato il controllo di sola lettura che aggiorna lo stile. Tutto quello che dovevo fare era aggiornare i miei stili visivi in modo da sembrare giusto e ora funziona perfettamente.
Per quel che vale, il mio codice ora sembra qualcosa di simile:
private void MyTextBox_GotFocus(object sender, RoutedEventArgs e)
{
this.MyTextBox.IsReadOnly = false;
this.MyTextBox.SelectAll();
}
private void MyTextBox_LostFocus(object sender, RoutedEventArgs e)
{
this.MyTextBox.IsReadOnly = true;
}
private void MyTextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
this.MyTextBox.IsReadOnly = true;
VisualStateManager.GoToState(
this.MyTextBox,
"ReadOnly",
true);
VisualStateManager.GoToState(
this.MyTextBox,
"Unfocused",
true);
VisualStateManager.GoToState(
this.MyTextBox,
"Valid",
true);
}
}
Invece di abilitato ho usato "IsReadOnly" - ma la stessa idea. Grazie! – will