¿Alguien sabe cómo agregar un controlador de eventos F # a un control en el archivo xaml?Agregue la función f # como controlador de eventos en xaml
Respuesta
Esencialmente tiene que cargar un archivo XAML y encontrar un control por su nombre:
let w = Application.LoadComponent(new System.Uri(
"/twitterstream;component/Window.xaml", System.UriKind.Relative
)) :?> Window
let b = w.FindName("buttonToggle") :?> Button
y luego se puede sencillo agregar un controlador de un evento:
b.Click.Add(fun _ -> ...)
Puede conseguir la suposición y el uso combinadores de eventos de primera clase - que aquí es una gran introducción paso a paso:
http://blogs.msdn.com/b/timng/archive/2010/05/06/f-wpf-events.aspx
Acabo de dar una charla sobre programación reactiva en F # (en Londres) que usó Silverlight para implementar la mayoría de los ejemplos. La charla ha sido grabado y las muestras están disponibles para su descarga, así, por lo que este puede ser un recurso útil:
- Ver mi blog with links to source, recording and slide
Para responder a su pregunta específica, no creo que puede usar el estilo habitual de especificar controlador de eventos en el archivo XAML (esto puede funcionar en la aplicación F # Silverlight, pero tendría que usar member
en lugar de la función let
).
Sin embargo, la mejor manera (puedo pensar) para escribir componentes Silverlight es tener solo una biblioteca F # Silverlight y usarla desde una aplicación C# Silverlight. En ese caso, debe escribir el enlace del controlador de eventos en el código. Un ejemplo simplificado (de una de las muestras de la conversación) se vería así:
open System.Windows.Controls
// Dynamic invoke operator that makes accessing XAML elements easy
// (easier than using 'FindName' explicitly in the code
let (?) (this : Control) (prop : string) : 'T = // '
this.FindName(prop) :?> 'T // '
type MyControl() as this =
inherit UserControl()
do
let path = "/MyProject;component/MyControl.xaml"
let uri = new System.Uri(path, UriKind.Relative)
Application.LoadComponent(this, uri)
// Get Button named 'TestButton' from the XAML file
let btn : Button = this?TestButton
// Add event handler to the button
btn.Add(fun _ -> btn.Text <- "Clicked!")
- 1. Eventos y delegados en F #
- 2. WPF - globalmente agregue la declaración del espacio de nombres xaml
- 3. Controlador de eventos en DataTemplate
- 4. Controlador de eventos que se invocará cuando se agregue un elemento en un cuadro de lista
- 5. cómo agregar controlador de eventos mediante programación en WPF como uno puede hacer en Winform
- 6. GWT: Agregue un controlador de eventos en todos los elementos div
- 7. Transformar la función 2d spline f (t) en f (x)
- 8. Agregue un controlador Rails de una gema
- 9. ¿Es posible sobrecargar la función en F #?
- 10. C# descriptores de acceso de eventos al estilo de los eventos de la CLI en F #
- 11. Teclee la tecla presionó controlador de eventos
- 12. Cancelar onbeforeunload controlador de eventos?
- 13. jQuery controlador de eventos en cola
- 14. F # argumentos de la función mutable
- 15. añadir un controlador de eventos
- 16. ¿Cómo llamar a la función javascript con el parámetro en el controlador de eventos jquery?
- 17. disparador XAML como StaticResource
- 18. ¿Cómo puedo definir una función de controlador de eventos en línea ActionScript en AddEvent Listener
- 19. VB.NET 2005 - Controlador de eventos "global"?
- 20. F # función de llamar la confusión sintaxis
- 21. ¿Cómo crear eventos compatibles con .NET en F #?
- 22. El elemento actual como su parámetro Función de eventos
- 23. Función Operador de aplicación ($) en F #?
- 24. grep con -f como en PHP
- 25. Controladores de eventos en XAML o Code Behind
- 26. Ayúdame a explicar la función F # Matrix
- 27. múltiples salidas de F # Función
- 28. Controlador de eventos es siempre nulo
- 29. ¿Agregar controladores de eventos múltiples para un evento en XAML?
- 30. caso el acceso a objetos en el controlador de eventos