À l'aide d'Images et d'Icônes dans WPF
Je suis en train d'utiliser une Icône dans mon application WPF, et de quelques images pour d'autres choses, mais je continue à recevoir des erreurs à partir de la Vue du Concepteur de dire des choses comme "chemin-x n'est pas une ressource valide ou ne peut pas être trouvé." - où "chemin-x" est le chemin d'accès quelle que soit l'image que je suis en train d'utiliser.
Si elle était à la recherche à la bonne place, je parie qu'il l'avais trouvé 😉
MAIS, alors, il a décidé de ne pas me donner cette erreur de plus. Donc, je suis allé de l'avant et cliqué sur "Exécuter" (F5), voir ma nouvelle Icône dans la barre de titre. Seul à être confronté à cette bête:
"Du système.De Windows.Balisage.XamlParseException
s'est produite Message='apporter de la valeur sur
'Système.De Windows.Baml2006.TypeConverterMarkupExtension'
a déclenché une exception.' Numéro de ligne '5'
et la position de la ligne '50'.
Source=PresentationFramework
LineNumber=5 LinePosition=50
StackTrace:
au Système.De Windows.Balisage.XamlReader.RewrapException(À L'Exception De
e, IXamlLineInfo lineInfo, Uri
baseUri)
au Système.De Windows.Balisage.WpfXamlLoader.Charge(XamlReader
xamlReader, IXamlObjectWriterFactory
writerFactory, Boolean
skipJournaledProperties, Objet
rootObject, XamlObjectWriterSettings
paramètres de l'Uri baseUri)
au Système.De Windows.Balisage.WpfXamlLoader.LoadBaml(XamlReader
xamlReader, Boolean
skipJournaledProperties, Objet
rootObject, XamlAccessLevel
accessLevel, Uri baseUri)
au Système.De Windows.Balisage.XamlReader.LoadBaml(Stream
stream, ParserContext parserContext,
Objet parent, Boolean closeStream)
au Système.De Windows.Application.LoadComponent(Objet
composant, Uri resourceLocator)
au One_Stop_Management.MainWindow.InitializeComponent()
dans c:\Users\Jason\Documents\Visual
Studio 2010\Projects\Un Arrêt
Gestion\Un Arrêt
Gestion\MainWindow.xaml:ligne 1
au One_Stop_Management.MainWindow..ctor()
dans C:\Users\Jason\Documents\Visual
Studio 2010\Projects\Un Arrêt
Gestion\Un Arrêt
Gestion\MainWindow.xaml.cs:ligne 25
InnerException: Système.IO.IOException
Message=Ne peut pas localiser la ressource 'images/favicon.ico'.
Source=PresentationFramework
StackTrace:
au MME Internes.AppModel.ResourcePart.GetStreamCore(FileMode
mode, FileAccess d'accès)
au Système.IO.De l'emballage.PackagePart.GetStream(FileMode
mode, FileAccess d'accès)
au Système.IO.De l'emballage.PackWebResponse.CachedResponse.GetResponseStream()
au Système.IO.De l'emballage.PackWebResponse.GetResponseStream()
au Système.IO.De l'emballage.PackWebResponse.get_ContentType()
au Système.De Windows.Médias.L'imagerie.BitmapDecoder.SetupDecoderFromUriOrStream(Uri
uri, Stream, stream, BitmapCacheOption
cacheOption, Guid& clsId, Boolean&
isOriginalWritable, Flux& uriStream,
UnmanagedMemoryStream&
unmanagedMemoryStream, SafeFileHandle&
safeFilehandle)
au Système.De Windows.Médias.L'imagerie.BitmapDecoder.CreateFromUriOrStream(Uri
baseUri, Uri Uri, Flux de flux,
BitmapCreateOptions createOptions,
BitmapCacheOption cacheOption,
RequestCachePolicy uriCachePolicy,
Boolean insertInDecoderCache)
au Système.De Windows.Médias.L'imagerie.BitmapFrame.CreateFromUriOrStream(Uri
baseUri, Uri Uri, Flux de flux,
BitmapCreateOptions createOptions,
BitmapCacheOption cacheOption,
RequestCachePolicy uriCachePolicy)
au Système.De Windows.Médias.ImageSourceConverter.ConvertFrom(ITypeDescriptorContext
contexte, CultureInfo culture, Objet
valeur)
au Système.De Windows.Baml2006.TypeConverterMarkupExtension.ProvideValue(IServiceProvider
fournisseur de services)
au MME Internes.Xaml.Moment de l'exécution.ClrObjectRuntime.CallProvideValue(MarkupExtension
moi, IServiceProvider serviceProvider)
InnerException: "
Pourquoi est-ce une chose me donnant attitude? Je suis juste essayer d'insérer une image...
Mises à jour
Voici le code XAML qui a été produit pour l'icône lorsque j'ai essayé d'ajouter l'Icône à l'aide du Volet Propriétés:
<Fluent:RibbonWindow x:Class="One_Stop_Management.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Fluent="clr-namespace:Fluent;assembly=Fluent"
Title="One Stop Management" Height="727" Width="1208" Icon="Resources\favicon.ico">
Dernière Mise À Jour
Je ne peux même pas ajouter une icône à l'aide de la fenêtre propriétés, ci-dessous est l'erreur qu'il me donne.
Ouais, bien sûr. Je mets à jour maintenant.
ajouté ça à fond de la question. Merci.
Merci tous pour votre aide! J'ai compris ce que le diable se passait après la lecture de @Craig lien vers MS Connecter.
OriginalL'auteur | 2011-04-08
Vous devez vous connecter pour publier un commentaire.
Je suis désolé je ne peux pas être plus utile. À la lecture de votre question, je pensais que ça serait juste une incompatibilité de type, comme où vous avez été en spécifiant une chaîne quand elle était censée être une image. Le problème semble être celui qui a plusieurs solutions possibles. Au lieu de les énumérer tous, je vais juste vous lien vers le Microsoft Connect page qui a sur elle.
Craig le lien est mort
OriginalL'auteur Craig Suchanec
Assurez-vous que la cible est une ressource. Puis faire quelque chose comme ceci:
où MobilWPF est votre espace de noms, ou peut-être vous êtes nom du projet? J'ai oublié mon nom de projet et de mon espace de noms sont les mêmes.
OriginalL'auteur bluepoisondartfrog
J'ai découvert que VS2008 provoque parfois des problèmes comme cela, lorsque vous ajoutez de nouvelles ressources et de reconstruire le projet. J'ai trouvé, si vous nettoyez le construire et reconstruire à partir de zéro, le problème disparaît. Ressemble à un VS2008 bug pour moi.
OriginalL'auteur Sean Nelson
J'ai résolu ce problème en définissant ces propriétés de l'image:
OriginalL'auteur Dave Dawkins
L'exception, si vous le lisez, dit la même chose:
C'est probablement parce que la
Images/favicon.ico
l'image de l'icône n'est pas configuré correctement. Assurez-vous que c'est l'Action de Construire est réglé sur "Ressources", et que c'est dans le projet dans le cadre des "Images" du dossier.Visual Studio auto crée un dossier nommé "Images" avec un grand "I". Mais quand je reçois le message d'erreur, l'erreur comme un "i" minuscule. Donc, j'ai même essayé de changer le " je " dans le dossier Images à une minuscule. Ne fonctionne toujours pas.
Avez-vous contrôlez l'Action de Construire (clic droit sur l'icône du fichier à VS, choisissez Propriétés)? Il doit être "Ressources"
J'ai mis à jour ma question 🙂
OriginalL'auteur Reed Copsey
La réponse semble dépendre de l'endroit où/comment vous stockez l'icône. J'ai essayé de faire quelque chose de similaire à @iterationx réponse mais il ne fonctionne pas pour moi, et c'est ce que j'ai fini avec. Je suis avec VS 2010.
J'ai ajouté l'icône comme une ressource via les propriétés du projet, sous des Ressources, Ajouter des Ressources (liste déroulante), Ajouter un fichier existant. Ensuite, j'ai juste utilisé le nom de fichier dans la
Icon
propriété:OriginalL'auteur Ben Scott
Je me souviens d'une situation similaire où ma demande était en panne, et j'ai finalement suivi un .ico erreur.
Si vous êtes en utilisant des icônes et Windows XP, XP ne prend pas en charge la 256x256 icônes. Vous pouvez avoir besoin d'ouvrir l'icône dans un éditeur tel que IcoFx, et de supprimer le 256x256 icône.
OriginalL'auteur PocketDews
Réglage
BuildAction
àResource
des ressourcesProperties
de résoudre ce problème.Accueille
OriginalL'auteur user3173185
J'ai eu ce même problème et a trouvé que, si votre projet a un espace dans le nom, il ne sera pas lire les fichiers image correctement. Espérons que cela aide.
OriginalL'auteur Jeremy Reagan
utilisez l'Icone=".\Images\test.ico" cela m'a fait travailler
lorsque vous essayez d'ajouter une icône pour votre application, vous trouverez souvent ce message d'erreur. Donc, pour surmonter le problème que vous allez avoir à utiliser l'Icône=".\Images\test.ico" comme code.
ok je vois, je voudrais ajouter cette ligne dans le code Source. Merci pour la mise à jour
OriginalL'auteur kedarK