2009-06-09 9 views
1

J'ai une bibliothèque de contrôle personnalisée avec un dictionnaire resouce qui fait référence à une image dans la même bibliothèque de contrôle personnalisée. J'ai ensuite une application WPF avec un refernce à la bibliothèque de contrôle personnalisé qui contient un dictionnaire de ressources avec un style qui utilise l'image. Lorsque j'essaie d'utiliser le style de la ressource externe, une erreur me dit qu'elle ne trouve pas l'image référencée dans le style.WPF Image Ressource externe

J'ai une solution d'échantillon fait que je peux envoyer quelqu'un qui en a besoin, mais j'espère qu'il ya quelqu'un là-bas qui sait juste la réponse ...

Merci, Aaron

Répondre

2

Ok, ce que j'ai trouvé ... Si vous avez un dictionnaire resouce externe avec un style:

<Style x:Key="Arrow" TargetType="{x:Type Button}"> 
<Setter Property="Template"> 
    <Setter.Value> 
    <ControlTemplate TargetType="{x:Type Button}"> 
     <StackPanel Orientation="Horizontal" Width="Auto" Height="20"> 
     <Image Source="/Images/RightArrow.png" /> 
     </StackPanel> 
    </ControlTemplate> 
    </Setter.Value> 
</Setter> 

et l'image est dans le dossier Images de l'assemblage externe du La référence au-dessus de la source fonctionne très bien lorsque vous êtes dans votre environnement de développement, mais une fois que vous faites référence à l'assembly, le chemin relatif du fichier RightArrow.png est perdu dans l'application WPF de référence. La réponse est donc d'utiliser ce qui suit pour la source:

 <Image Source="/Skin;component/Images/RightArrow.png" /> 

Notez l'URI de sélection au lieu du chemin relatif. Cela garantit que l'application de référencement sait où trouver réellement l'image.

+0

Juste comme une note de côté, vous pouvez également faire quelque chose comme: /Peau; composant/Images/RightArrow.png /> et puis votre image ressemblerait à ceci:

0

Lorsque vous ajouter l'image à votre projet dans VS, il a une propriété appelée "Copier dans le répertoire de sortie". Définissez sa valeur sur "Toujours copier" ou "Copier si plus récent". Puis reconstruisez. Je parie que ça le répare.

+0

Merci bpayne vous avez raison, ça marche. Pour ne pas être trop pointilleux, mais je ne veux pas un tas d'images dans mon répertoire de sortie et je veux être en mesure de redistribuer l'habillage comme une seule bibliothèque par opposition à une DLL et un tas d'images. –