2009-01-09 5 views
2

J'essaie de faire quelque chose plutôt simple: ajouter une icône simple à la fenêtre principale de l'application. Cela peut être fait assez facilement. L'icône elle-même est placée dans le répertoire Resources et son action de construction est définie sur Resource. Le code XAML de la fenêtre inclut une référence à cette icône:Comment puis-je adresser (heureusement en XAML) une ressource liée correctement dans WPF?

Icon="Resources/wiser.ico" 

Cela fonctionne très bien. Cependant, ce que je veux vraiment faire est de récupérer cette icône d'un autre endroit, un répertoire d'images partagées entre plusieurs versions de notre application (nous supportons environ 5 plateformes en fonction de la façon dont vous comptez). Dans notre passé WinForms, cela a été fait en ajoutant la ressource comme un élément existant et en choisissant «Ajouter en tant que lien» dans la boîte de dialogue. Ceci, cependant, cause des problèmes avec l'icône notée ci-dessus. Tout d'abord, il ne finit pas à l'endroit approprié dans l'assemblage. Reflector le trouve dans le chemin de base de l'application, et non dans le répertoire Resources où il devrait être. Une version non liée de l'icône apparaît en effet dans le répertoire Resources. En second lieu, un correctif pour le chemin (Icon = "wiser.ico") permet de compiler les choses mais fait que le concepteur lance une erreur, rendant le concepteur lui-même inutilisable.

Je suppose que c'est juste un bug (ou deux, selon la façon dont vous comptez). Y a-t-il un moyen simple de contourner cela? Notez que j'avais espéré soutenir le lien de notre système de contrôle de source à la place mais cela ne semble pas être soutenu par SVN et le résultat final serait probablement une touche confuse à maintenir.

+0

@Ken: Très bonne question. J'ai en fait rencontré le même problème en développant une application WPF, et je n'ai pas trouvé de solution. Avez-vous soumis cela sur MS Connect peut-être? Cela semble certainement être un bug pour moi, même si j'espère qu'il existe une solution de rechange pour le développement actuel. – Noldorin

+0

C'est le seul autre endroit en ligne que je peux trouver qui confirme le problème: http://learnwpf.com/Posts/Post.aspx?postId=f90013aa-2164-4c56-a672-4136b2dc493b. Malheureusement, il ne fournit aucune solution de contournement. – Noldorin

+0

Non, je ne l'ai jamais mentionné sur MS connect. N'hésitez pas à le faire. –

Répondre

1

Deux choses que je peux penser pour le partage des ressources:

1) Vous pouvez mettre vos ressources dans un ensemble séparé que vous pourriez partager dans vos applications.

Utilisez cette syntaxe pour obtenir la ico ou d'autres éléments (.png, XAML, etc.) de l'Assemblée:

Icon="/CommonResources;component/app.ico" 

ou en utilisant la syntaxe pack

Icon="pack://application:,,,/CommonResources;component/app.ico" 

2) Vous pouvez utiliser la empaqueter la syntaxe de l'application pour charger l'ico dans un chemin de fichier relatif à partir de votre assembly.

Icon="pack://siteoforigin:,,,/app.ico" 
+0

Merci, mais ce n'est pas vraiment le problème. Je peux aborder la ressource correctement, si je pouvais le reconnaître. –

Questions connexes