Est-il possible de définir le code derrière un dictionnaire de ressources dans WPF. Par exemple, dans un contrôle utilisateur pour un bouton, vous le déclarez dans XAML. Le code de gestion des événements pour le clic sur le bouton est effectué dans le fichier de code derrière le contrôle. Si je devais créer un modèle de données avec un bouton, comment puis-je écrire le code du gestionnaire d’événements pour cliquer sur le bouton dans le dictionnaire de ressources.
Je pense que ce que vous demandez, c’est que vous vouliez un fichier code-behind pour un ResourceDictionary. Vous pouvez le faire totalement! En fait, vous le faites de la même manière que pour une fenêtre:
Supposons que vous ayez un ResourceDictionary appelé MyResourceDictionary. Dans votre fichier MyResourceDictionary.xaml, placez l’atsortingbut x: Class dans l’élément racine, comme suit:
Ensuite, créez un code derrière le fichier appelé MyResourceDictionary.xaml.cs avec la déclaration suivante:
namespace MyCompany.MyProject { partial class MyResourceDictionary : ResourceDictionary { public MyResourceDictionary() { InitializeComponent(); } ... // event handlers ahead.. } }
Et tu as fini. Vous pouvez mettre tout ce que vous voulez dans le code: méthodes, propriétés et gestionnaires d’événements.
== Mise à jour pour les applications Windows 10 ==
Et juste au cas où vous joueriez avec UWP, il y a encore une chose à savoir:
Je ne suis pas d’accord avec “ageektrapped” … utiliser la méthode d’une classe partielle n’est pas une bonne pratique. Quel serait le but de séparer le dictionnaire de la page alors?
A partir d’un code-behind, vous pouvez accéder à l’élément ax: Name en utilisant:
Button myButton = this.GetTemplateChild("ButtonName") as Button; if(myButton != null){ ... }
Vous pouvez le faire dans la méthode OnApplyTemplate si vous souhaitez raccorder des contrôles lorsque votre contrôle personnalisé se charge. OnApplyTemplate doit être remplacé pour cela. Ceci est une pratique courante et permet à votre style de restr déconnecté du contrôle. (Le style ne doit pas dépendre du contrôle, mais le contrôle doit dépendre de son style).
Gishu – Bien que cela puisse sembler être une pratique “généralement pas encourageante” Voici une des raisons pour lesquelles vous pourriez vouloir le faire:
Le comportement standard des zones de texte lorsqu’elles ont le focus est que le curseur soit placé à la même position que lorsque le contrôle a perdu le focus. Si vous préférez, tout au long de votre application, que lorsque l’utilisateur accède à une zone de texte sur laquelle l’intégralité du contenu de la zone de texte a été sélectionnée, l’ajout d’un gestionnaire simple dans le dictionnaire de ressources suffira.
Toute autre raison pour laquelle le comportement d’interaction utilisateur par défaut doit être différent du comportement prêt à l’emploi semble être un bon candidat pour un code derrière dans un dictionnaire de ressources.
Tout à fait d’accord que tout ce qui est spécifique à la fonctionnalité de l’application ne doit pas figurer dans un code derrière un dictionnaire de ressources.
XAML permet de construire des graphes d’object ne contenant pas de code.
Un modèle de données est utilisé pour indiquer comment un object utilisateur personnalisé doit être rendu à l’écran … (par exemple, s’il s’agit d’un élément de la liste), le comportement ne fait pas partie du domaine d’expertise d’un modèle de données. Redessinez la solution …