L'accès ResourceDictionary de WPF UserControl
J'essaye d'accéder à un dictionnaire de ressources dans un UserControl code-behind via C# et je vais avoir peu de succès.
Fusionné Dictionnaire:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Resources/BiometricDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
Intégré Dictionnaire:
<UserControl.Resources>
<BitmapImage x:Key="imageDefault">/Resources/Images/default_thumb.png</BitmapImage>
<BitmapImage x:Key="imageDisconnected">/Resources/Images/disconnect_thumb.png</BitmapImage>
<BitmapImage x:Key="imageFailed">/Resources/Images/failed_thumb.png</BitmapImage>
<BitmapImage x:Key="imageSuccess">/Resources/Images/success_thumb.png</BitmapImage>
</UserControl.Resources>
Code derrière:
var resourceDictionary = new ResourceDictionary();
resourceDictionary.Source = new Uri("/Resources/BiometricDictionary.xaml", UriKind.Relative);
J'ai essayé tous les exemples et de conseils utiles, mais à venir à court. Maintenant, le succès est la capacité à charger le dictionnaire. Toutes les suggestions?
OriginalL'auteur | 2009-06-02
Vous devez vous connecter pour publier un commentaire.
Pour accéder à l'un de vos UserControl le XAML de ressources dans votre code, tout ce que vous devez faire est de l'accès aux Ressources de propriété de l'objet UserControl. Quelque chose comme ceci:
Cependant, la meilleure méthode est d'utiliser FindResource(), qui permet de rechercher l'ensemble de l'arborescence logique pour un match à la clé, plutôt que de simplement l'objet auquel il est appelé.
OriginalL'auteur PeterAllenWebb
Essayez de supprimer la barre oblique en face de votre emplacement. Le seul moment où vous devez utiliser /Ressources est si vous devez aller jusqu'à une bibliothèque en premier. comme ../Ressources
Espère que cela vous aide.
OriginalL'auteur Max Mazur
Donc, vous avez un ResourceDictionary définie dans un UserControl de l'assemblée, et souhaitez accéder à partir de ce UserControl code-behind?
Vous devriez être en mesure de. Cependant, si le code que vous avez indiquée est dans le constructeur, vous ne pouvez pas avoir accès à la ressource dictionnaire (peut-être pas encore chargé). Essayez d'ajouter que le même code de votre UserControl "chargé" de l'événement, et de voir si cela fonctionne. Si vous êtes simplement en train d'essayer d'accéder à une ressource, comme un style ou d'un modèle, à l'aide de la "FindResource" ou "TryFindResource" fonctions directement à partir de votre classe devrait fonctionner aussi bien (c'est à dire que vous n'avez pas besoin d'avoir un objet de type "ResourceDictionary").
Espère que ça aide!
OriginalL'auteur Mark Carpenter
Oh pinaise...après la compilation de la bin local, de sorte que les références sont relatives, j'ai mis en place le pack URI solution trouvée ici: ResourceDictionary dans un ensemble distinct et puis FindResource(x:valeur de la clé ici).
@PeterAllenWeb, @Pwninstein, merci pour la rapidité de vos réponses et de m'avoir fait penser à nouveau.
OriginalL'auteur