2012-03-19 8 views
2

J'ai une application WPF que j'essaye de convertir en DLL. Le problème est que j'ai un certain nombre de ressources au niveau de l'application mis en place dans mon App.XAML. Dans la DLL, j'essaie de définir mes ressources par programme.Espace de noms Confusion

Pour charger mes ressources programatically J'ai ceci:

ResourceDictionary myResourceDictionary = new ResourceDictionary(); 
myResourceDictionary.Source = new Uri("C:\\Users\\Ash\\Documents\\Visual Studio 2010\\Projects\\moo Process Flow Manager\\moo Process Flow Manager\\Resources\\Styles\\Shared.xaml"); 
Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); 
myResourceDictionary = new ResourceDictionary(); 
myResourceDictionary.Source = new Uri("C:\\Users\\Ash\\Documents\\Visual Studio 2010\\Projects\\moo Process Flow Manager\\moo Process Flow Manager\\Resources\\Styles\\ToolBar.xaml"); 
Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); 
myResourceDictionary = new ResourceDictionary(); 
myResourceDictionary.Source = new Uri("C:\\Users\\Ash\\Documents\\Visual Studio 2010\\Projects\\moo Process Flow Manager\\moo Process Flow Manager\\Resources\\Styles\\ZoomBox.xaml"); 
Application.Current.Resources.MergedDictionaries.Add(myResourceDictionary); 

Cette ligne:

myResourceDictionary.Source = new Uri("C:\\Users\\Ash\\Documents\\Visual Studio 2010\\Projects\\moo Process Flow Manager\\moo Process Flow Manager\\Resources\\Styles\\ZoomBox.xaml"); 

Lance l'erreur suivante lors de l'exécution:

'Failed to create a 'Type' from the text 's:ZoomBox'.' Line number '5' and line position '12'. 

À l'exception intérieure:

{"Type reference cannot find type named '{clr-namespace:Arkitec.moo.ProcessFlowManager.Controls}ZoomBox'."} 

Voici la ligne des thats provoquant l'erreur dans les zoombox.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:s="clr-namespace:Arkitec.moo.ProcessFlowManager.Controls"> 

    <Style TargetType="{x:Type s:ZoomBox}"> 

est ici où la classe est déclaré qu'il devrait regarder dans zoombox.cs:

namespace Arkitec.moo.ProcessFlowManager.Controls 
{ 
    public class ZoomBox : Control 
    { 

S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations.

EDIT: Comme par Guilammes answert J'ai essayé:

myResourceDictionary.Source = new Uri("Resources/Styles/Shared.xaml", UriKind.Relative); 

Mais l'erreur suivante:

Cannot locate resource 'resources/styles/shared.xaml'. 
+0

J'ai supprimé ma réponse depuis, vous éditez votre question.J'espère que quelqu'un vous aidera plus – Guillaume

Répondre

0

Essayez de définir la propriété shared.xaml comme suit:

Build Action --> Page 
copy to output directory --> do not copy 
custom tool --> MSBuild:Compile 

puis se référer le xaml comme suit

new System.Uri("/YourNamespace;Resources/Styles/Shared.xaml", System.UriKind.Relative);