2010-04-06 5 views
2

J'ai deux projets dans WPF et un projet est le principal et le second est juste pour tester (il utilise les fichiers du projet principal - les fichiers sont ajoutés via Projet -> ajouter -> Articles existants ... - > fichier sélectionné -> ajouter en tant que lien pour que le fichier ne soit vraiment que dans le projet principal).Comment spécifier le chemin pour le fichier d'un projet différent dans WPF?

dossiers avec des projets sont les suivants:

C:\Work\...\Projects\Main 
C:\Work\...\Projects\XXXTestProject 

où XXX représente les différentes parties du projet principal que je tester séparément.

J'ai le code:

<Window x:Class="Sokoban.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:Sokoban" 
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase" 
    Title="Window1" Height="559" Width="419"> 
    <Window.Resources>   
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="GameDesk.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Window.Resources> 

    <Grid>   
     <Rectangle local:GameDeskProperties.FieldSize="30" Name="myrect" Style="{DynamicResource GameDesk}" MouseEnter="Rectangle_MouseEnter" /> 
    </Grid> 
</Window> 

... qui devrait utiliser les ressources XAML de GameDesk.xaml qui est dans le projet principal et il semble que je ne peux pas utiliser URI pack (http://msdn.microsoft.com/en-us/library/aa970069.aspx) . Comment puis-je spécifier le fichier?

  • Dois-je utiliser le chemin absolu? (C: \ Travail ... \ Main \ Resources \ GameDesk.xaml)

  • Ou existe-t-il un autre moyen?

Nous vous remercions de votre aide!

+0

Vous avez donc ajouté * GameDesk.xaml * à votre projet de test en tant que fichier lié? –

+0

Oui. Chaque partie importante du projet de test doit provenir du projet principal. –

Répondre

2

MSDN link here

utiliser un bloc: // URI de la forme:

paquet

: // application: ,,,/ReferencedAssembly; composant/sous-dossier/ResourceFile.xaml

si le XAML est dans un ensemble référencé

ou

Pack

: // siteoforigin: ,,,/Sous-dossier/SiteOfOriginFile.xaml

si le code XAML est lâche et copié dans le dossier bin.

+0

Je veux utiliser la première option mais je ne pense pas qu'elle puisse fonctionner dans mon cas car je n'ai pas ces deux projets sous une seule solution. Les deux projets sont en solution séparée. À quoi ressemblerait-il exactement dans mon scénario? Je vous remercie! –

+0

N'a pas besoin d'être dans la même solution, il suffit d'ajouter une référence à la DLL. –

+0

Mais s'il doit être compilé ("référence à la DLL") que je ne peux pas faire de changements dans le projet de test (ce qui signifie effectivement dans le projet principal). Jusqu'à présent, j'ai défini l'événement de pré-construction dans VS qui copie le fichier nécessaire, ce qui n'est pas une bonne solution, mais cela fonctionne et la copie est effectuée via des chemins relatifs afin qu'elle reste portable. –

Questions connexes