todos. Tengo un usercontrol "NumericTextBox" que solo permite entradas numéricas. Necesito mostrar otro comportamiento especializado, es decir, lo necesito para poder vincularlo a un valor VM OneWayToSource y solo tengo la actualización del valor VM cuando presiono enter mientras enfoco el cuadro de texto. Ya tengo el evento EnterPressed que se activa cuando presiono la tecla, me cuesta mucho encontrar la manera de hacer que esa acción actualice el enlace ...Cuadro de texto WPF que solo actualiza el enlace cuando se presiona enter
9
A
Respuesta
11
En su expresión de enlace, configure UpdateSourceTrigger a explícito.
Text="{Binding ..., UpdateSourceTrigger=Explicit}"
Entonces, cuando se manipula el caso EnterPressed, llaman UpdateSource en la expresión de enlace, esto empujará el valor del cuadro de texto a la propiedad cota real.
BindingExpression exp = textBox.GetBindingExpression(TextBox.TextProperty);
exp.UpdateSource();
3
Si está usando MVVM se puede utilizar una combinación de enfoque de decastelijau junto con una propiedad asociada a medida que llama UpdateSource en el cuadro de texto cuando 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);
}
entonces usted puede hacer:
<TextBox myprops:UpdaterProps.UpdateSourceOnKey="Enter" ... />
7
Aquí es una versión completa de la idea proporcionada por 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);
}
Cuestiones relacionadas
- 1. Ejecutar la función cuando se presiona enter si el cuadro de texto tiene foco
- 2. WPF: Cuadro de texto texto no se actualiza
- 3. WPF: solo lectura, decir cuadro de texto y enlace
- 4. Obtener texto cuando se presiona intro en un cuadro de texto en wxPython
- 5. Encuadernación del cuadro de texto TwoWay no se actualiza hasta que se perdió el foco WP7
- 6. ¿Puedo cancelar la devolución de datos cuando el usuario presiona regresar en un cuadro de texto?
- 7. cambiar el color del botón de texto cuando se presiona
- 8. Texto borroso en WPF solo cuando se ejecuta el programa
- 9. jquery contenteditable enter "¿Cómo disparo shift-enter cuando alguien presiona enter?"
- 10. Enlazar el cuadro de texto a la tecla 'enter'
- 11. Javascript presentar cuadro de texto en ENTER
- 12. ¿Puedo configurar el cuadro de texto para que sea de solo lectura cuando se usa Html.TextBoxFor?
- 13. Flex 4 detectar si el usuario presiona la tecla enter
- 14. El enlace de datos para el cuadro de texto
- 15. Mantener el teclado suave abierto cuando se presiona la tecla enter
- 16. El botón predeterminado en JFrame no se activa cuando se presiona la tecla enter
- 17. ¿Cómo puedo saber cuándo se presiona la tecla Intro en un cuadro de texto?
- 18. WPF ListBox no se actualiza con ItemsSource
- 19. Android cómo hacer que el texto de TextView sea negrita cuando se presiona o se enfoca
- 20. Enlace de datos no se actualiza cuando TextBox está vacío
- 21. Presiona presionando Enter en un formulario de Windows
- 22. WPF MVVM: Cuadro de texto y botón de enlace predeterminado hace demasiado tarde actualización
- 23. JSF: ¿cómo enviar el formulario cuando se presiona la tecla enter?
- 24. Llamar a un botón específico en el evento Click cuando se presiona la tecla enter C#
- 25. WPF: Cuadro de texto que no activa el eventoTextInput
- 26. Android cómo hacer que el texto del botón sea negrita cuando se presiona o se enfoca
- 27. Mostrar el menú contextual cuando se presiona largamente el enlace en TextView
- 28. Cambiar el valor del cuadro de texto cuando se selecciona un elemento en el cuadro desplegable
- 29. Enviar formulario cuando se presiona Entrar
- 30. Detener que un cuadro de texto WPF pierda el foco