2009-04-01 2 views
62

몇 가지 WPF 응용 프로그램이 있고 모든 스타일을 각 응용 프로그램에서 별도로 선언하는 대신 공유 어셈블리에 포함하고 싶습니다.외부 파일 또는 어셈블리에서 WPF 스타일 또는 기타 정적 리소스로드

나는 기존 응용 프로그램에서 내 Style="{StaticResource BlahBlah}"을 모두 바꿀 필요가없는 방법을 찾고 있습니다. 이 스타일 어셈블리에 대한 참조를 추가하고 현재 응용 프로그램에서 삭제하므로 어셈블리에서 가져옵니다.

어떨까요?

답변

108

(XAML 파일) 외부 ResourceDictionary에 참조하기 :

<Application.Resources> 
    <ResourceDictionary Source="MyResources.xaml" /> 
</Application.Resources> 

외부 ResourceDictionary에 참조하기 (DLL) :

<Application.Resources> 
    <ResourceDictionary Source="/MyExternalAssembly;component/MyResources.xaml" /> 
</Application.Resources> 
+0

하지만 우리가 자원에 존재하는 스타일을 재정의 할 수있는 방법을 말 해주세요 것 다른 어셈블리의 xaml 파일? 예 : Foreground 속성이 설정된 스타일이며 기본 스타일 (x : Key가 없음)입니다. 그런 다음 Background 속성을 변경하기 만하면됩니다. 그래서 BaseOn을 사용했지만 작동하지 않습니다. : –

+3

@ amkh 일단 해당 스타일을 범위로 가져 오면 높은 범위 수준에서 새 스타일을 만들어 다시 정의하고 재정의 할 수 있습니다. 'BasedOn'을 {StaticResource {x : Type TextBox}}'(TextBox – Shimmy

+0

고마워요. 내 실수는 BasedOn을 사용하는 동안 잘못된 위치에 스타일을 만들고 있다는 것입니다. –

관련 문제