2010-04-19 2 views
1

스타일 및 템플릿 xaml 파일을 내 응용 프로그램 (.exe) 프로젝트에서 여러 응용 프로그램에서 사용하기 때문에 라이브러리 프로젝트 (.dll)로 옮겼습니다. . App.xaml에서다른 어셈블리의 MergedDictionaries에 자동 (키가없는) 스타일이 적용되지 않았습니다.

는 내가 가진 : (일반 어셈블리) All.xaml에서

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/MyApplication.Common;component/Resources/All.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

:

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="Styles.xaml" /> 
    <ResourceDictionary Source="Templates.xaml" /> 
    <ResourceDictionary Source="Converters.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

을 Styles.xaml에 열쇠가없는 스타일이 적용되지 않습니다이 코드. 내가 App.xaml에서 직접 참조하는 경우

대신, 그것을 작동 : 그런 일이 왜

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="pack://application:,,,/MyApplication.Common;component/Resources/Styles.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MyApplication.Common;component/Resources/Templates.xaml" /> 
      <ResourceDictionary Source="pack://application:,,,/MyApplication.Common;component/Resources/Converters.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

는 사람이 설명 할 수 있습니까?

답변

0

이것은 리소스 사전 구현의 결과물입니다. EXE에서 All.xaml이 App.xaml에 병합 된 후에 다른 사전에 대한 상대 참조가 발견되지 않습니다. 대신에 완전 정규화 된 (절대) 팩 URI를 지정하면 응용 프로그램에서 해당 URI를 찾을 수 있습니다.

그래서, All.xaml이 대체 :

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="Styles.xaml" /> 
    <ResourceDictionary Source="Templates.xaml" /> 
    <ResourceDictionary Source="Converters.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

을두고 :

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="pack://application:,,,/MyApplication.Common;component/Resources/Styles.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MyApplication.Common;component/Resources/Templates.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MyApplication.Common;component/Resources/Converters.xaml" /> 
</ResourceDictionary.MergedDictionaries> 
관련 문제