2012-09-03 3 views
1

question에 대한 후속 조치로 Thiado de Arruda이 게시되었습니다. 간단히 말해서, 그는 generic.xaml 파일에 DataTemplate을 갖고 싶었지만 템플릿이 적용되지 않았습니다.generic.xaml의 데이터 템플릿을 어떻게 자동으로 적용 할 수 있습니까 (redux)?

주어진 답은 자신의 사용자 지정 형식을 호스팅하는 컨트롤의 ControlTemplate.Resources에 DataTemplate을 배치하는 것이 좋습니다. 그러나이 작업은 매우 효과적이지만 호스트 컨트롤뿐만 아니라 다른 곳에서도 적용 할 DataTemplate이 필요하다고 가정합니다. DataTemplate을 다른 모든 호스트 컨트롤의 ControlTemplates에 복사해야합니까?

편집 (재 작성 질문) :

내가 MVVM 디자인 원리를 사용하여 WPF 응용 프로그램을 개발하고있다. MainWindow.xaml에는 UI 구조가 포함되어 있으며 모든 스타일은 Themes \ generic.xaml으로 코딩되어 있습니다. (이 동작은 별도의 뷰 모델 클래스로 코딩되었지만 관련이 없습니다.) UI의 일부로, 자신의 생성 (.) 일반 .Net 객체 컬렉션을 표시하기 위해 ListBox()의 하위 클래스를 만들었습니다. MyListBoxSubClassTemplate 속성을 다시 정의하고 generic.xaml 스타일을 다시 정의하고 예상대로 적용됩니다. MyObjectDataTemplategeneric.xaml에 있지만 적용되지 않습니다. 위의 링크에 따르면 DataTemplate을 적용하기 위해 DataTemplateControlTemplateResources 컬렉션에 넣고 MyListBoxSubClass을 넣어야합니다. 이것은 훌륭하게 작동합니다.

내 질문은 DataTemplate을 복제 할 필요없이 DataTemplate 내 응용 프로그램에서 사방 MyObject에 적용 할 받으시는 방법? DataTemplate에 키를 추가하고 그것을 필요로하는 곳에서 참조하려고했지만 어떤 이유로 런타임에 XAML 구문 분석 오류가 발생하고 Resharper가 내 DataTemplate 키를 해결할 수 없다고 말합니다.

+0

DataTemplate에 키를 추가하고 템플릿을 적용 할 때마다 사용할 수 있으므로 전체 템플릿을 복사 할 필요가 없습니다. –

+0

그렇게하면 Resharper에서 "해결할 수 없습니다"라는 오류를 표시하고 XAML의 해당 부분을로드하려고 할 때 응용 프로그램이 중단됩니다. – gregsdennis

답변

0

다른 XAML 파일의 별도 리소스 사전에 데이터 템플릿을 추가합니다.

는 generic.xaml을 컨트롤 템플릿 자원에 XAML 파일을 가져 :

<ControlTemplate ...> 
    <ControlTemplate.Resources> 
     <ResourceDictionary> 
       <ResourceDictionary.MergedDictionaries> 
        <ResourceDictionary Source="wherever.xaml" /> 
       </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </ControlTemplate.Resources> 
</ControlTemplate> 

을 그런 다음이 데이터 템플릿을 사용하여 원하는 목적지까지 다른, 당신은 당신이 원하는 목적지의 자원을 통합 사전에 그것을 가져올 수 - 사용자 컨트롤, 창, 다른 컨트롤 템플릿 등 ...

<Window x:Name="someWindow"> 
    <Window.Resources> 
     <ResourceDictionary> 
       <ResourceDictionary.MergedDictionaries> 
        <ResourceDictionary Source="wherever.xaml" /> 
       </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 
    </Window.Resources> 
</Window> 

희망이 도움이됩니다.

관련 문제