Necesito hacer un nuevo control WPF y darle el Caret a él. En WINFORMS o en la interfaz de usuario de Windows anterior era fácil usar las funciones WIN API Caret, pero ahora en WPF no tenemos hwnd para cada control, así que ... ¿hay alguna manera de hacerlo?Cómo puedo asignar el Caret a un control en WPF
Respuesta
En WPF, el símbolo de intercalación es realmente CaretElement, un FrameworkElement interno utilizado para representar bloques de selección y el símbolo de intercalación.
Si no heredas de algún tipo de control que ya ofrece soporte de intercalación y tratas de manipularlo, lamentablemente, podrías estar enfrentando la necesidad de implementarlo desde cero.
EDITAR
El CaretElement es interno al marco y sí, no documentada.
Se menciona here, por ejemplo.
Existe una implementación personalizada de código cerrado en un paquete commercial.
Caret en WPF es una animación más, sin API especial para eso. Dibuja una línea y cambia su opacidad con DoubleAnimation.
Si mira más de cerca a WPF TextBox, el símbolo de intercalación ni siquiera hace "inversión de píxeles", es solo una línea gris dibujada sobre la letra.
Potencialmente puede realizar la inversión de píxeles en WPF, mediante la implementación de un efecto de sombreado de píxeles. No vale la pena, probablemente. VS2010 beta no hace inversión para el texto de intercalación.
Aparte de cuadro de texto/RichTextBox hay otros 3 componentes de edición se pueden encontrar:
- Expresión editor de código de mezcla
- Visual Studio editor de código 2010
- SharpDevelop editor de código de 4
Ok, es complicado ... y luego TExt debe ser manejado por el evento TextInput así como por los eventos Preview/KeyDow/UP. Es una pesadilla hacerlo desde cero ... Gracias por la ayuda. Todos ustedes, chicos. – jmayor
Sin duda es una pesadilla de buena calidad. –
Relacionado: [¿Cómo obtengo el período de interrelación del sistema en .NET?] (Http://stackoverflow.com/questions/11986832/how-do-i-get-the-systems-caret-period-in-net) ... y aunque no hay una forma directa de recuperar la frecuencia de parpadeo de intercalación en WPF aparte de utilizar P/Invoke o referencia de WinForms (decidir por sí mismo cuál considera el mal menor), la clase 'SystemParameters' de WPF proporciona una ['CaretWidth'] (http://msdn.microsoft.com/en-us/library/system.windows.systemparameters.caretwidth.aspx) campo. –
- 1. ¿Cómo puedo configurar TabIndex en un control WPF Expander?
- 2. ¿Cómo puedo hacer clic en un control en WPF?
- 3. ¿Cómo asignar atajos de teclado al control de cinta WPF?
- 4. ¿Cómo puedo convertir un control WPF en una imagen?
- 5. ¿Cómo se emula el caret en Etherpad?
- 6. ¿Cómo puedo asignar un valor a Html.Hiddenfor desde jQuery/JavaScript?
- 7. ¿Cómo puedo asignar más de una "CssClass" a un control en asp.net
- 8. ¿Cómo acceder a un control WPF ubicado en ControlTemplate?
- 9. Asignar tecla de acceso directo a un botón en WPF
- 10. WPF invocar un control
- 11. cómo puedo obtener el padre del control de usuario wpf
- 12. Desvanecimiento WPF en un control
- 13. Caret en el objetivo C
- 14. ¿Cómo simular un caret artificial en un área de texto?
- 15. Desde WPF Control a Silverlight Control
- 16. TextBox Caret Styling
- 17. TEdit focus & caret
- 18. WPF: Chainging property de otro control en el control Trigger
- 19. ¿Cómo puedo asignar una propiedad a un objeto jQuery?
- 20. WPF Custom Control - ¿Cómo prueba un control personalizado?
- 21. WPF - Pase el valor de un control a un convertidor para establecer el ancho en otro control
- 22. Usando un control WPF personalizado en WinForms
- 23. Ejecutar un control WPF en otro hilo
- 24. Cómo asignar recursos de WPF a otras etiquetas de recursos
- 25. Clojure caret como un símbolo?
- 26. ¿Hay un control de asistente en WPF?
- 27. WPF: ¿cómo puedo unir la posición de un control a la posición actual del mouse?
- 28. Copie un control WPF programáticamente
- 29. Diseñando un control de mapa WPF
- 30. Cómo enfocar el control en la tabla en WPF
Eso CaretElement no está documentado, ni siquiera accesible, ¿verdad? – jmayor
Respuesta modificada para completar. –
Creé un artículo explicando para crear uno en WPF http://www.codeproject.com/Articles/633935/Customizing-the-Caret-of-a-WPF-TextBox –