Accéder à une ressource via le code-behind dans WPF
J'ai une collection personnalisée définie dans ma fenêtre de ressources de la manière suivante (dans un Sketchflow application de sorte que la fenêtre est en fait un UserControl):
<UserControl.Resources>
<ds:MyCollection x:Key="myKey" x:Name="myName" />
</UserControl.Resources>
Je veux être en mesure de se référer à cette collection dans le code-behind, qui je devrait l'être par les x:Nom, mais je n'arrive pas à y accéder.
Je peux obtenir une référence à l'aide de
myRef = (MyCollection) this.FindName("myKey");
mais cela semble hackish. Est-ce une mauvaise pratique, et ce serait mieux? Merci 🙂
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
System.Windows.Controls.UserControl
'sFindResource()
ouTryFindResource()
méthodes.Aussi, une bonne pratique est de créer une chaîne de caractères constante qui associe le nom de votre clé dans le dictionnaire de ressources (de sorte que vous pouvez changer en un seul endroit).
Vous pouvez également utiliser
this.Resources["mykey"]
. Je suppose que ce n'est pas beaucoup mieux que votre propre suggestion.Pas exactement de réponse directe, mais étroitement liés:
Dans le cas où les ressources sont dans un autre fichier (par exemple ResourceDictionary.xaml
Vous pouvez simplement ajouter
x:Class
à elle:Et ensuite l'utiliser dans le code behind:
res.InitializeComponent()
avant de tenter d'accéder à la clé sinon l'objet ne montrent pas de touches et l'appel àres["myKey"]
serait de retourner la valeur null.Converters
Vous pouvez utiliser une clé de ressource comme ceci:
DataTemplate
est de typeDataTemplateKey
.Si vous souhaitez accéder à une ressource à partir d'une autre classe (j'.g. pas une xaml code-behind), vous pouvez utiliser
de
System.Windows
espace de noms.