Dans WPF, vous pouvez définir un gestionnaire d'événements en XAML (par exemple, SelectionChanged de ComboBox), ce qui est génial. Cependant, le problème que je rencontre est que l'événement est déclenché trop tôt. Il est câblé lorsque le contrôle est créé. Par conséquent, si un autre contrôle en dessous de ce code est référencé dans le gestionnaire d'événements, vous obtiendrez une exception null. Je me suis retrouvé avec beaucoup de vérifications nuls dans mon gestionnaire d'événements, ce qui serait inutile sinon. Je souhaite que tous les événements soient connectés après la création de tous les contrôles (par exemple, OnInitialized). Y a-t-il un moyen de le faire? Ou ai-je manqué quelque chose ici?WPF: Comment retarder le déclenchement d'un événement défini en XAML?
Répondre
Je pense que la meilleure solution consiste à définir ces gestionnaires d'événements dans le code derrière vous, après l'appel InitializeComponent()
dans le constructeur. Bien sûr, ce ne sera plus XAML, mais c'est le seul moyen de s'assurer que tous les contrôles que vos gestionnaires peuvent référencer ont déjà été créés.
Merci pour le conseil. La plupart des gestionnaires d'événements sont définis de cette façon. Cependant, d'une certaine manière, je pense qu'il est un peu plus propre de laisser ces gestionnaires déclarés en XAML (comme dans le concepteur WinForm). Je veux le rendre cohérent, donc je dois choisir dans un sens ou dans l'autre pour l'ensemble du projet. – newman
Vous pouvez vérifier la propriété IsLoaded de votre contrôle principal au début de votre gestionnaire d'événements et la renvoyer si elle est fausse. Donc, quand c'est vrai, vous serez sûr que tout est créé et prêt pour l'interaction.
- 1. Animation WPF/XAML avec son propre événement
- 2. DataTemplate défini en XAML a null VisualTree
- 3. Événement événement de claquement de bulles dans WPF Xaml
- 4. convertisseur wpf en xaml
- 5. Déclenchement d'un événement onclick en utilisant le clic du milieu
- 6. Déclenchement d'un événement futur basé sur un événement en cours
- 7. ObjectDataProvider MethodParameter défini directement en XAML
- 8. Echiquier WPF - comment dessiner en XAML
- 9. WPF: comment masquer GridViewColumn en utilisant XAML?
- 10. Le déclenchement d'un événement click avec le prototype
- 11. Événement propre pour UserControl personnalisé en XAML!
- 12. Problèmes WPF avec la syntaxe de déclenchement
- 13. Événements WPF - Comment mapper le code XAML à un événement de la classe de base?
- 14. WPF - style Mixing défini dans le dictionnaire avec un style défini dans le contrôle parent
- 15. Déclenchement d'un événement "Click" sans entrée utilisateur
- 16. Firebug: "événement n'est pas défini"
- 17. comment produire retarder en rubis
- 18. Les propriétés attachées à WPF ne tirent pas le code derrière lorsqu'il est défini dans xaml
- 19. Obtention d'un identifiant d'élément impliqué dans le déclenchement d'un événement
- 20. Convertir WPF (XAML) contrôle en document XPS
- 21. WPF - MergedDictionary utilisant RibbonControlsLibrary en XAML
- 22. WPF ObservableCollection dans xaml
- 23. Retarder le rendu d'un contrôle personnalisé dans WPF
- 24. Accès XAML contrôle dans WPF
- 25. WPF: Animation en XAML plutôt qu'en C#?
- 26. WPF XAML Bind Grid
- 27. WPF - XAML - Déclenchement de données sans déclencheur de liaison/Valeur uniquement
- 28. WPF ListView SelectedValue non défini
- 29. WPF lier DataContext en XAML à ViewModel dans le code
- 30. wpf débogage xaml
pouvez-vous poster votre code? reliez-vous SelectedItem à quoi que ce soit? – Vitalik