2012-08-30 2 views
0

내 응용 프로그램 테마의 경우 별도의 클래스 라이브러리 MyApp.Themes.dll을 만들었습니다. 내가 Accordion.xaml이 표준 폴더에서별도의 어셈블리에서 전역 스타일

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary 
     Source="pack://application:,,,/MyApp.Themes;component/Standard/Accordion.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

:이 라이브러리의 루트 폴더에서 나는 Standard.xaml이

WPF 툴킷 아코디언 제어를위한 기본 스타일은 해당 스타일을 제외하고 있습니다
<ResourceDictionary xmlns:layoutPrimitivesToolkit="..." 
        xmlns:layoutToolkit="..." 
        ...> 
    <!-- layoutPrimitivesToolkit:AccordionButton --> 
    <Style TargetType="layoutPrimitivesToolkit:AccordionButton"> 
    ... 
    </Style> 

    ... 
</ResourceDictionary> 

AccordionItem이 백그라운드를 투명하게 설정되도록 수정되었습니다 (알려진 버그 인 파란색 대신).

두 xaml 파일의 Build Action은 "Resource"로 설정됩니다. (, 그냥 적용되지 스타일의 오류를)

<Application.Resources> 
    <ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary    
     Source="pack://application:,,,/MyApp.Themes;component/Standard.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

그것은 작동하지 않습니다 지금, MyApp를 WPF 프로젝트에 MyApp.Themes 라이브러리를 참조 후, App.xaml에서 나는 다음 썼다. & 붙여 넣기 Accordion.xaml 스타일을 App.xaml에 직접 복사하면 작동합니다. 어떤 사람들은 더미 리소스 사전을 추가하는 제안, 그래서 나는 MergedDictionaries 종료 태그 뒤에 App.xaml에 다음 추가 :

<Style TargetType="{x:Type layoutToolkit:AccordionItem}" /> 

다시 말하지만, 그것은 작동하지 않습니다. 누군가 내가이 문제를 해결하도록 도울 수 있습니까? 그건 그렇고, 난 다른 사람에 의해 제안 된 접근법을 시도하지 않았다 - basedOn을 사용. 그렇게해야한다면 MyApp.Themes, 에서하고 싶습니다. App.xaml에서 더 멋진 테마를 사용하기 때문입니다. 미리 감사드립니다.

갱신 1 : 내가 직접

UPDATE2을 Standard.xaml하는 & 붙여 넣기 Accordion.xaml의 컨텐츠를 복사 할 경우 그것은 작동 : 나는 지방 의회의 리소스 파일 URI를 (시도 http://msdn.microsoft.com/en-us/ Standard.xaml에서 라이브러리/aa970069.aspx는) :

<ResourceDictionary Source="pack://application:,,,/Standard/Accordion.xaml"/> 

그것은 표준/accordion.xaml 찾을 수 없습니다라고 오류가 발생합니다.

답변