문제

app.xaml에 사용자 정의 명명 스타일을 추가했습니다.

외부 리소스 사전 (app.xaml의 병합 사전에 첨부)을 만들었고 Rcource 사전에서 위의 명명 된 스타일 중 하나를 사용하려고 할 때 그러한 스타일이 없다고 말합니다.

또한 기본 스타일 (예 : 전체 응용 프로그램에 적용되는 이름없는 스타일)은 템플릿 요소에 적용되지 않습니다.

참고 : 템플릿의 빌드 동작은 '페이지'입니다.


다음은 내 코드 작성 방법의 예입니다.

<Application x:Class="Application"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
    ShutdownMode="OnExplicitShutdown">
    <Application.Resources>
        <ResourceDictionary>

            <Style
                    x:Key="StackPanelStyle" 
                    TargetType="StackPanel" 
                    BasedOn="{StaticResource {x:Type StackPanel}}">
                <Setter Property="Margin" Value="5"/>
                <Setter Property="Orientation" Value="Horizontal" />
                <Setter Property="Height" Value="40"/>
            </Style>

            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Templates/DataTemplate1.xaml"/>
                <ResourceDictionary Source="/Templates/DataTemplate2.xaml"/>
                <ResourceDictionary Source="/Templates/DataTemplate3.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

이것은 데이터 템플릿의 예입니다.

<DataTemplate DataType="{x:Type Entity}" x:Key="NameDataTemplate">
    <Expander>
        <StackPanel>
            <--The following line produces: StackPanelStyle was not found.-->
            <StackPanel Style="{StaticResource StackPanelStyle}">
                <Label Content="Name:"/>
                <TextBox Text="{Binding Name}"/>
            </StackPanel>
        </StackPanel>
    </Expander>
</DataTemplate>

어떤 아이디어? 사전을 다른 방식으로 병합해야합니까?

도움이 되었습니까?

해결책

리소스 사전의 DataTemplate은 어느 것이 그것을 사용하고 있는지 알지 못하기 때문에 코드는 잘 작동하지 않습니다. 계속 ~ 이다 사용된. 할리우드 모드처럼. 그들은 별도로 컴파일했습니다.

이 작업을 수행하려면 App.xaml에 DataTemplate의 동일한 리소스 사전 또는이 커플 링이 마음에 들지 않으면 스타일을 넣을 수 있습니다. 다른 리소스 사전에 넣고 데이터 emplate의 리소스 사전에 병합하십시오..

다른 팁

app.xaml의 빌드 조치는 ApplicationDefinition이어야하며 리소스 사전 파일의 빌드 작업은 페이지 여야합니다. 나는 당신이 기본값이기 때문에 두 가지가 올바른 것으로 생각합니다 (그리고 이미 Page에 대해 언급 한 것을 알았습니다).

나는 당신의 상황에 대한 다른 문제를 생각할 수 없습니다. 정적 리소스가 올바른 순서로 정의되는 한 응용 프로그램을 실행할 때 찾을 수 있어야합니다.

편집하다

디버깅 아이디어 : 간단한 버튼 스타일로 "testdictionary.xaml"이라는 새로운 리소스 사전을 만듭니다. 이 사전이 다른 사전과 동일한 폴더에 있는지 확인하십시오 (DataTemplate1.xaml 등). 고환만으로 링크를 넣으십시오 MergedDictionaries (다른 사람을 언급하십시오). 시작 창에 버튼을 넣고 스타일을 적용하십시오. 그것이 작동하는지 확인하십시오. 실패하면 합병에 문제가 있다는 것을 알고 있습니다. 그것이 성공한다면, 당신에 대해 뭔가 DataTemplate 문제가 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top