all. Ho un controllo utente "NumericTextBox" che consente solo voci numeriche. Ho bisogno di esibire un altro comportamento specializzato, cioè, ho bisogno che sia in grado di associarlo a un valore VM OneWayToSource e di avere l'aggiornamento del valore VM solo quando premo invio mentre si concentra la casella di testo. Ho già un evento EnterPressed che si attiva quando premo il tasto, sto solo facendo fatica a trovare un modo per fare in modo che l'azione aggiorni l'associazione ...Casella di testo WPF che aggiorna solo il binding quando viene premuto Invio
9
A
risposta
11
Nell'espressione di associazione, impostare UpdateSourceTrigger in modo esplicito.
Text="{Binding ..., UpdateSourceTrigger=Explicit}"
Poi, quando la gestione dell'evento EnterPressed, chiamano UpdateSource sull'espressione vincolante, questo spingerà il valore dalla casella di testo alla proprietà bound effettivo.
BindingExpression exp = textBox.GetBindingExpression(TextBox.TextProperty);
exp.UpdateSource();
3
Se si sta utilizzando MVVM è possibile utilizzare una combinazione di approccio di decastelijau insieme ad una proprietà personalizzata collegata che chiama UpdateSource sulla casella di testo quando PreviewKeyUp.
public static readonly DependencyProperty UpdateSourceOnKey = DependencyProperty.RegisterAttached(
"UpdateSourceOnKey",
typeof(Key),
typeof(TextBox),
new FrameworkPropertyMetadata(false)
);
public static void SetUpdateSourceOnKey(UIElement element, Key value)
{
//TODO: wire up specified key down event handler here
element.SetValue(UpdateSourceOnKey, value);
}
public static Boolean GetUpdateSourceOnKey(UIElement element)
{
return (Key)element.GetValue(UpdateSourceOnKey);
}
allora si può fare:
<TextBox myprops:UpdaterProps.UpdateSourceOnKey="Enter" ... />
7
Ecco una versione completa dell'idea fornito da Anderson Imes:
public static readonly DependencyProperty UpdateSourceOnKeyProperty =
DependencyProperty.RegisterAttached("UpdateSourceOnKey",
typeof(Key), typeof(TextBox), new FrameworkPropertyMetadata(Key.None));
public static void SetUpdateSourceOnKey(UIElement element, Key value) {
element.PreviewKeyUp += TextBoxKeyUp;
element.SetValue(UpdateSourceOnKeyProperty, value);
}
static void TextBoxKeyUp(object sender, KeyEventArgs e) {
var textBox = sender as TextBox;
if (textBox == null) return;
var propertyValue = (Key)textBox.GetValue(UpdateSourceOnKeyProperty);
if (e.Key != propertyValue) return;
var bindingExpression = textBox.GetBindingExpression(TextBox.TextProperty);
if (bindingExpression != null) bindingExpression.UpdateSource();
}
public static Key GetUpdateSourceOnKey(UIElement element) {
return (Key)element.GetValue(UpdateSourceOnKeyProperty);
}
Problemi correlati
- 1. Comando di richiamo quando viene premuto il tasto "INVIO" XAML
- 2. Passa alla casella di testo successiva quando viene premuto il tasto "Invio" invece di inviare (Windows Phone)
- 3. Impossibile acquisire il tasto Invio nella casella di testo WinForms
- 4. Rileva il tasto Invio viene premuto con jquery
- 5. Ottieni testo quando si preme invio in una casella di testo in wxPython
- 6. WPF - MVVM - Casella di testo che non viene sincronizzata con la proprietà viewmodel
- 7. Consenti solo immissione numerica nella casella di testo WPF
- 8. Come prevenire l'asterisco con Invio viene premuto all'interno C#/* */commenti
- 9. Casella di controllo WPF Il binding IsChecked non funziona
- 10. WPF: un TextBox che ha un evento che si attiva quando si preme il tasto Invio
- 11. Pass KeyUp come parametro WPF Command Binding Text Box
- 12. Il binding WPF con INotifyPropertyChanged non viene aggiornato
- 13. Casella di testo ASP.NET che perde valore dopo il postback quando il valore viene modificato lato client tramite javascript
- 14. Come nascondere la tastiera della casella di testo quando viene premuto il pulsante "Fine/Ritorna" Xcode 4.2
- 15. wpf textbox text binding
- 16. Convalida nella casella di testo in WPF
- 17. TabItem Binding WPF
- 18. Perché il testo nella casella di testo è evidenziato (selezionato) quando viene visualizzato il modulo?
- 19. WPF Tooltip: Mostra solo quando il testo è qualcosa
- 20. Perché il frame Tkinter viene ridimensionato quando viene aggiunta una casella di testo?
- 21. Casella di testo WPF in modalità "virtuale"
- 22. android: Softkeyboard esegue un'azione quando viene premuto il tasto Fine
- 23. Come eseguire il binding all'evento di invio quando viene utilizzata la convalida HTML5?
- 24. Come rimuovere il bordo dalla casella di testo in WPF?
- 25. Azione di ripetizione JavaScript quando il mouse viene tenuto premuto
- 26. WPF CommandParameter nella casella di testo
- 27. cambia colore pulsante testo quando premuto
- 28. WPF DataBinding non si aggiorna?
- 29. Keyboard.Focus non funziona sulla casella di testo in WPF
- 30. WPF angolo arrotondato casella di testo