Est-ce que quelqu'un sait comment ajouter un gestionnaire d'événements F # à un contrôle dans le fichier xaml?Ajouter la fonction f # en tant que gestionnaire d'événements dans xaml
Répondre
Essentiellement, vous devez charger un fichier XAML et trouver un contrôle par nom:
let w = Application.LoadComponent(new System.Uri(
"/twitterstream;component/Window.xaml", System.UriKind.Relative
)) :?> Window
let b = w.FindName("buttonToggle") :?> Button
et vous pouvez simplement ajouter un gestionnaire d'un événement:
b.Click.Add(fun _ -> ...)
Vous pouvez obtenir la fantaisie et de l'utilisation événement de première classe combinators - ici est une excellente introduction étape par étape:
http://blogs.msdn.com/b/timng/archive/2010/05/06/f-wpf-events.aspx
Je viens de parler de la programmation réactive en F # (à Londres) qui a utilisé Silverlight pour implémenter la plupart des exemples. La conversation a été enregistrée et les échantillons sont disponibles pour téléchargement et, si cela peut être une ressource utile:
- Voir mon blog with links to source, recording and slide
Pour répondre à votre question, je ne pense pas que vous pouvez utiliser le style habituel de spécification du gestionnaire d'événements dans le fichier XAML (cela peut fonctionner dans F # Silverlight Application, mais vous devrez utiliser member
au lieu de la fonction let
). Cependant, la meilleure façon (je pense) d'écrire des composants Silverlight est de n'avoir qu'une bibliothèque F # Silverlight et d'utiliser celle d'une application Silverlight C#. Dans ce cas, vous devez écrire la liaison du gestionnaire d'événements dans le code. Un exemple simplifié (tiré de l'un des exemples de la conversation) ressemblerait à ceci:
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. Visiblité en tant que ressource dans XAML
- 2. Déclencheur XAML en tant que StaticResource
- 3. Méthode d'interface en tant que gestionnaire d'événements
- 4. Enregistrer la chaîne formatée en tant que XAML
- 5. Seq seq type en tant que paramètre membre dans F #
- 6. Déléguer en tant que fonction
- 7. F # correspond au modèle actif en tant que tuple étendu
- 8. Comment écrire une fonction en tant que gestionnaire d'événement et fonction appelable prenant un argument?
- 9. Utilisation de JMS en tant que gestionnaire de verrou distribué?
- 10. Image vectorielle en tant que fragment XAML réutilisable
- 11. Où trouver le thème WPF Classic en tant que XAML?
- 12. Comment définir une propriété personnalisée en tant que valeur XAML?
- 13. Appel du constructeur en tant que fonction dans C#
- 14. Qu'est-ce que la fonction/F dans PostScript?
- 15. jQuery fullcalendar: événements (en tant que flux json) et événements (en tant que fonction) dans IE
- 16. Surcharge en tant que fonction ami?
- 17. matrice en tant que sortie d'une fonction
- 18. Vb6.0 Comment lier une fonction/sous-procédure à un événement externe en tant que gestionnaire d'événements?
- 19. fonction 'startsWithVowel' dans F #
- 20. Comment obtenir le nom d'une variable entrant dans une fonction en tant que paramètre en utilisant F #?
- 21. envoyer IQueryable en tant que paramètre à la fonction
- 22. Le rappel de la fonction passe en tant que variable
- 23. Comment écrire cette fonction en tant que fonction pL/pgSQl?
- 24. Comment ajouter gestionnaire dans DataTemplate dynamique
- 25. Comment définir et ajouter une énumération en tant que type
- 26. Comment appliquer un symbole en tant que fonction dans Scheme?
- 27. Ajout d'une fonction dans mon application .NET en tant que gestionnaire d'événement dans une autre application .NET
- 28. Passage d'objets/références en tant que paramètres de fonction
- 29. Analyser manuellement la chaîne en tant qu'attribut XAML
- 30. en passant une fonction en tant que paramètre?