2010-12-13 73 views
0

J'utilise Blend 4 et VisualStudio 2010 pour créer une application WPF 4.0 kiosque qui a une fonction de type assistant. J'ai décidé que les étapes individuelles devraient être déplacées pour séparer UserControls, afin de garder la fenêtre principale de l'application aussi légère que possible. Toutefois, j'ai des problèmes pour inclure le contrôle UserControl dans la fenêtre principale, car les chemins d'image sont tronqués après avoir déplacé le XAML dans un fichier UserControl distinct.Comportement de chemin d'image bizarre UserControl dans Blend 4 et WPF 4.0

Ce code fonctionne quand il est mis dans la fenêtre principale XAML:

<Button Grid.Row="1" Grid.Column="2" Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" Margin="20" VerticalAlignment="Bottom" Style="{DynamicResource ImageButton}"> 
    <Button.Background> 
    <ImageBrush ImageSource="/Images/Extra/motor_boat_2.jpg" Stretch="UniformToFill"/> 
    </Button.Background> 
</Button> 

Mais quand je propose que le code à un contrôle utilisateur séparé et l'inclure dans la fenêtre principale, le concepteur lance et exception:

IOException: impossible de localiser la ressource 'images/extra/sailing_boat.jpg'

J'ai essayé d'utiliser deux syntaxes différentes, mais tous échouent, parfois en utilisant le répertoire %ProgramFiles%, d'autres fois la conversion du chemin absolu relatif (comme ci-dessus). Parfois, l'opération Build Project dans Blend 4 échoue à cause de cela.

Toutes les images sont marquées comme Ressource avec Action de construction définie sur Copier Toujours.

VisualStudio n'a aucun problème pour créer et exécuter l'application, le contrôle UserControl s'affiche correctement dans l'application en cours d'exécution sans exceptions levées.

EDIT:

En utilisant des chemins relatifs dans le UserControl, puis la construction et l'exécution de l'application de VisualStudio et de revenir au Blend affiche correctement les images, jusqu'à la prochaine modification du UserControl.

Répondre

0

Utilisez Pack URI comme suit:

Uri uri = new Uri("pack://application:,,,/Images/Extra/motor_boat_2.jpg"); 
+0

Ce fut la première forme de chemins que j'ai essayé, n'a pas aidé. Il s'est montré correctement dans VS, mais pas dans Blend. J'ai modifié la question pour inclure un cas où cela a fonctionné. –