68 votes

Comment puis-je accéder à ResourceDictionary dans wpf partir de code C#?

J'ai un datatemplate défini dans un fichier xaml que je veux accéder via le code c#. Quelqu'un peut-il me dire comment puis-je y accéder? J'ai ajouté une nouvelle ResourceDictionary fichier et son nom est Dictionary1.xaml. J'ai un modèle de données telles que:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <DataTemplate x:Key="mytemplate">
        <TextBlock Text="Name:" Background="Blue"/>
    </DataTemplate>
</ResourceDictionary>

non j'ai une listbox appelé listBox1 et je wana l'affecter à la propriété Itemtemplate mais je ne suis pas arriver comment puis-je le faire?

60voto

Szymon Rozga Points 11277

Exactement où êtes-vous le définir?

Si vous définissez dans le ResourceDictionary de votre objet, puis

Application.Current.Resources[typeof(yourDataTemplateTargetType)]

devrait fonctionner. Si vous définissez comme un membre de quelque chose d'autre, comme par exemple, un ItemsControl, vous avez besoin pour obtenir un handle pour le ItemsControl instance et d'appel de la propriété ItemTemplate.

Edit: Ok, je pense que nous sommes se rendre quelque part. Donc, vous êtes à la définition d'un ResourceDictionary dans son propre fichier. Avant de pouvoir l'utiliser dans votre INTERFACE utilisateur et de l'accès à partir de votre code derrière, vous avez besoin de fusionner ResourceDictionary dans votre application. Faites-vous cela?

Si vous êtes, alors la prochaine étape est d'obtenir cette ressource. Chaque FrameworkElement a une méthode appelée FindResource. Cette méthode est grand parce qu'il parcourt l'ResourceDictionary arbre et tente de localiser la ressource avec la clé. Donc, si vous voulez avoir accès à cette ressource à partir d'un UserControl, vous pouvez effectuer les opérations suivantes dans le code behind:

FindResource(typeof(yourDataTemplateTargetType));

Si cela ne fonctionne pas pour vous, merci de nous montrer exactement comment vous devez déclarer ce dictionnaire de ressources et la manière dont ils sont fusionnés dans les ressources de votre application.

7voto

Jakob Christensen Points 9381

Par exemple si vous avez un modèle de Bouton dans votre dictionnaire de ressources dans l'Application.fichier xaml, vous pouvez y accéder en utilisant le code suivant:

Application.Current.Resources[typeof(Button)]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X