2014-03-12 1 views
0

런타임시 일부 어셈블리의 ResourceDictionary을로드해야합니다.WPF의 EmbeddedResource에서 ResourceDictionary Uri로드 및 검사

먼저 내가 페이지으로 ResourceDictionary에의BuildAction을 설정하고, URI를 구축하기 위해 코드를 사용합니다.

작동하지만, 그때, 나는 내 ResourceDictionary에 URI를 설정하기 전에 어셈블리를 확인해야한다는 것을 깨달았다. ResourceDictionary가 어셈블리에 없으면 예외가 throw됩니다.

var rd = new ResourceDictionary 
     { 
      Source = uri 
     }; 

그래서 나는 아래의 코드와 어셈블리에있는 ResourceDictionary를보기 위해, EmbeddedResource 내 ResourceDictionary에의 BuildAction을 설정

var hasResource = assembly.GetManifestResourceNames(). 
       Any(resourceName => resourceName.EndsWith("MyResource.xaml")); 

하지만 지금은 그럴 수 없어 uri로 ResourceDictionary를로드하십시오. 나는 할 수있는 모든 것을 시도했지만 성공하지 못했습니다.

아이디어가 있으십니까? 감사! Build ActionPage에 다음이 assemblys이 같은 리소스 액세스 수를 설정

답변

0

시도 :

ResourceDictionary resources = new ResourceDictionary(); 
resources.Source = new Uri("pack://application:,,,/AssemblyName;component\Resources\MyResource.xaml"); 

그런 다음이 같은 리소스에 액세스 할 수 있습니다 :

object obj = resources["key"]; 
+0

거의 내 코드와 같다. MyResource.xaml이 어셈블리에 없으면 예외가 throw됩니다. – Ivan

+0

맞아, 나는 assemblyName 변수를 완전히 간과 했어. 빌드 액션을 페이지로 설정 하려던 적이 있습니까? –

+0

내 assemblyName 변수를 간과 한 것 같습니다 -) 예, 처음에 시도했습니다. 내 문제는 페이지에서 리소스에 액세스하는 것이 아닙니다. Uri를 ResourceDictionary의 Source로 설정하려고합니다. Resource.xaml이 어셈블리에 없으면 예외가 발생합니다. – Ivan

관련 문제