2009-06-16 4 views
2

다른 WPF 컨트롤 라이브러리 프로젝트에 저장된 WPF 창을 여는 사무실 리본을 만듭니다. WPF 창에 별도의 프로젝트로 컴파일 된 ResourceDictionary에 저장된 일부 테마가 첨부되어 있습니다.WPF 컨트롤 라이브러리의 ResourceDictionary

그러나 WPF 창을로드하면 ResourceDictionary의 모든 테마가 손실됩니다.

수동으로/창 자체에 테마를 강제로 수정할 수 있지만 이는 좋지 않은 해결책으로 보입니다. 그래서 내 질문은 : Office Addin 응용 프로그램에서 새 WPF 창의 테마를로드 할 수 있습니까?

Uri uri = new Uri("/Nov.Presentation.RigDoc.WpfResources;component/Shared.xaml", UriKind.Relative); 
      Resources.MergedDictionaries.Add(Application.LoadComponent(uri) as ResourceDictionary); 
+0

어떤 용도로 사용하나요? http://stackoverflow.com/questions/977981/xaml-how-to-define-data-templates-styles-to-be-used-over-several-projects –

+0

답장을 보내 주셔서 감사합니다! 예, 아니요, 사용하고있는 것이지만 Office 응용 프로그램에서 창을 열면 WPF 응용 프로그램 범위에서 실행되지 않기 때문에 스타일이 사라집니다. –

답변

2

저는 Office 2010 (실제로는 2007 VSTO Addin을 사용하지만 2010 년에 실행 중임)을 사용하여이 작업을 시도했지만 완벽하게 작동합니다. VSTO 프로젝트에서 참조 된 외부 프로젝트의 라이브러리가 있는데이를 리소스 사전에 링크하기 위해 컨트롤의 xaml 다음에 사용합니다.

<UserControl.Resources> 
    <ResourceDictionary> 

     <!-- Link in th general styles --> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/MyAssemblyName;component/MyResourceDictionaryName.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 

     <!-- Other style... --> 

    </ResourceDictionary>   

</UserControl.Resources> 

그렇지 않으면 나는 나중에, 명시 적 또는 암시 적 스타일 링크에 의해 오버라이드되는 당신의 스타일에 문제가있는 생각할 수있다. 참조하는 어셈블리를 찾을 수 없으면 샘플을 던져 문제가 없어야합니다.

관련 문제