Image en WPF Bouton n'est pas Visible au moment de l'Exécution
Tous, j'ai le texte suivant pour commencer une petite application qui vérifie .fichiers resx pour la cohérence de l'embedded crochets (de sorte que des erreurs d'exécution, de non-correspondance "... {0}" les chaînes ne pas se produire). J'ai le code XAML suivant pour la MainWindow.xaml, et mon problème est lié à l'image qui sera affichée sur le bouton
<Window x:Class="ResxChecker.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="174.383" Width="495.869">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="350*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="30*"/>
</Grid.RowDefinitions>
<Label Content="Select .resx file:" HorizontalAlignment="Left" Margin="10,0,0,0" VerticalAlignment="Top" Height="24" Width="Auto" Grid.ColumnSpan="1"/>
<TextBox Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Margin="10,0,0,0" Grid.Row="1" TextWrapping="Wrap" Text="" VerticalAlignment="Top"/>
<Button Grid.Column="2" HorizontalAlignment="Right" Margin="5,0,10,0" Grid.Row="1">
<Image VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Height="16 " Width="16" Source="pack://siteoforigin:,,,/Resources/UserCost2013Open16.png"/>
</Button>
</Grid>
</Window>
L'image a 'Construire l'Action = Ressource", "Copier vers le répertoire de sortie = Ne pas copier" - l'image s'affiche dans le concepteur, mais pas au moment de l'exécution. J'ai vu les questions suivantes et de lire les réponses, mais aucune résoudre le problème:
Comment puis-je obtenir le bouton image pour apparaître au moment de l'exécution?
- Essayez le réglage de l'action de construire à
Content
. Il peut être utile - Essayé aussi. Ce qui n'aide pas non plus...
- Ce qui pourrait éventuellement contribuer à l'est de la vérification de la sortie de la console dans Visual Studio lors du débogage de l'application. Parfois, il montre utile erreurs (par exemple, la liaison des erreurs, etc.)
- Habituellement, votre URI sera probablement la question, alors que Daniel dit chercher à la sortie de la fenêtre, il y aura probablement des plaintes au sujet de la source de l'image ne trouve pas ou quelque chose de cette nature.
- la valeur build-action pour le contenu et la valeur "copier vers le répertoire de sortie" à la "copy" ou "copier si plus récent'
- essayé tous ces pas la joie. Depuis, j'ai vérifier la "production" au moment de l'exécution, et mscorlib.dll a été lancer une IOException, mais sans donner d'autres informations...
- Note aux rédacteurs: code de mise en forme doit être réservé pour code.
- Voici aussi un explication de Microsoft sur le schéma d'URI utilisé pour WPF dans le cas où vous voulez comprendre la structure sous-jacente.
- Ce que l'exception était-ce? Un
InvalidCastException
par hasard? Je suis en train de déboguer un problème similaire, et voir si les symptômes correspondent exactement à ce que l'un pourrait m'aider (et d'autres futurs visiteurs) trouver une solution. - Toutes mes excuses @O. R. Mappeur, j'ai été en vacances. Oui, si je me souviens bien c'était un
InvalidCastException
... - J'ai résolu mon problème en particulier; voir mon autre commentaire et le lien si vous êtes intéressés.
- merci, va faire...
- Résolu. Au lieu de la Source="/Ressources/goback.png" j'ai été l'aide de la Source=Ressources/goback.png. Paramètres: CopyIfNewer et le Contenu.
Vous devez vous connecter pour publier un commentaire.
Changement de l'action de construire de "Ressource".
Aussi votre pack url est fausse. Soit utiliser:
ou tout simplement
pack://application:,,,/...
ne semble pas être beaucoup aimé par .XAML au moment de l'exécution. Déclenche une erreur inconnu/non valide bla bla". J'ai unUIDomain
projet avec tous les points de vue, des diffuseurs, des modèles et des images. Il semble que laResources/*.png
est prévu pour être dans leviews/ ... ... /Resources/img.png
répertoire lorsqu'il est plus comme../Resources/img.png
Il y a 2 Solutions:
1: Modifier les paramètres de l'image:
2: Lors de l'Utilisation de application au lieu de siteoforigin dans le chemin de la source, vous devez façons possibles:
a) l'Image sera dans un sous-dossier appelé "Ressources" et .exe fichier sera petit
b) de l'Image sera inclus dans le .exe et pas de sous-dossier avec imagefile existera
Copy to output directory
n'est pas nécessaire dans mon cas.Dans mon cas, j'avais les images dans un autre projet nommé
Common
et les images sont dans un dossier nomméResources
dans ce projet. Dans mon autre projet, j'ai ajouté une référence àCommon
et de définir la source de l'image comme ceci:Les images ont la
Build Action
ensemble deResource
etCopy to Output Directory
àDo not copy
. Cependant, pour une raison étrange, il ne fonctionnait pas jusqu'à ce que j'ai supprimé tous les fichiers d'assemblage dans ma solution et fait unClean Solution
etBuild Solution
. Je ne sais pas pourquoi, mais tout a commencé à travailler au moment de l'exécution une fois que j'ai tout reconstruit. Je n'arrive toujours pas à comprendre pourquoi il travaillait au Moment de la Conception bien.component
chaîne dans le chemin Source est essentielle à l'obtention de mes images pour les afficher au moment de l'exécution.Assumeing que vous avez
définir votre
Build Action
àResource
jeu de chemin d'accès correctement à l'aide de
URI-PACK-FORMAT
Dans mon cas, il n'était toujours pas à l'affiche.
Clean & Rebuild
PAS seulement de Construire fixe pour moi !BuildAction
&UriPack
a droit. L'Image ne montre pas =>Clean & Rebuild
et cela a fonctionné.Image in WPF Button not Visible at Runtime
qui a été le cas lors de mon côté et au-dessus c'est ma solution. Je n'ai pas de soins sur-2 rep, mais je l'ai vraiment aucune idée de ce que ur problème, c'est .. ?!Vous devez ajouter quelque chose à l'intérieur l'Explorateur de solutions de Visual Studio.
Au lieu de simplement copier l'image vers un dossier dans l'Explorateur Windows, appuyez sur Clic Droit sur un dossier dans l'Explorateur de solutions d'aller à Ajouter > Élément Existant... et sélectionnez le chemin d'accès à votre ressource à ajouter.
Aller à votre image présente dans le dossier de ressources, clic droit sur l'image, allez dans les propriétés. Cliquez sur BuildAction propriété et le régler à la Ressource à partir de rien. Que vais travailler.
J'ai défini mon image suivante:
L'image est affichée dans Visual Studio designer, mais aucune image n'est affichée lorsque j'ai lancé l'application! Il m'a rendu fou!
J'ai essayé tous les Action de Construires propre/build, pas de chance.
Dans mon cas, le problème est causé par le fait que le contrôle (qui utilise Image) et l'application elle-même sont dans différents projets. Ressources/Images dossier est dans le Contrôles projet. Comme résultat de l'application a tenté de trouver d'icône.png dans son propre dossier de Débogage, mais en fait c'est dans Contrôles' Debug dossier.
Donc deux solutions pour moi:
1) mettre Ressources/Images dans l'application du projet (pas si bon quand il y a plusieurs projets qui utilisent des contrôles à partir de Contrôles projet, mais il fonctionne)
2) spécifiez le nom de Contrôles projet explicitement à l'intérieur de Image:
Source="file:///D:/100x100.jpg"/> fonctionne pour moi.