Pergunta

I adicionado costume estilos nomeado para o app.xaml.

Eu criei um dicionário de recurso externo (que atribuo nos dicionários mesclados da app.xaml) e quando eu tento usar uma das opções acima estilos nomeados no dicionário rcource, ele diz que não existe tal estilo.

Também os estilos padrão (ou seja, estilos sem nome que se aplicam para o aplicativo inteiro) não se aplicam nos elementos de modelo.

. Nota: O Build Action dos modelos é a página de '


Aqui está um exemplo de como o meu código está escrito:

<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>

Este um exemplo do modelo de dados:

<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>

Todas as idéias? Eu tenho que mesclar os dicionários de uma maneira diferente?

Foi útil?

Solução

O código não vai funcionar bem porque o DataTemplate no dicionário recurso não sabe qual é usá-lo, ele só foi usado. o modo como Hollywood. Eles compilados separadamente.

Para fazer este trabalho, você pode colocar o seu estilo que por app.xaml no mesmo dicionário de recursos do DataTemplate ou se você não gosta deste acoplamento, você pode colocá-lo em um dicionário de recursos diferentes, e mesclá-la no recurso do DataTemplate dicionário .

Outras dicas

A Acção Construção para sua App.xaml deve ser ApplicationDefinition, ea ação de compilação para os arquivos dicionário de recursos deve ser a página. Eu estou supondo que você tem tanto daqueles correta, porque eles são padrão (e eu ver que você mencionou sobre a página já).

Eu não consigo pensar em nenhum outro problema com a sua situação. Enquanto seus recursos estáticos são definidos na ordem correta, que eles parecem ser, ele deve ser capaz de encontrá-los quando você executar o aplicativo.

Editar

Depuração ideia: criar um dicionário de recursos fresco chamado "TestDictionary.xaml" com um estilo simples botão. Certifique-se este dicionário é na mesma pasta como seus outros dicionários (DataTemplate1.xaml, etc.). Coloque um link para única TestDictionary em MergedDictionaries (comentário fora os outros). Coloque um botão na janela do seu arranque e aplicar o estilo. Veja se apenas que as obras. Se ele falhar, você sabe que tem um problema com sua mala. Se for bem sucedido, algo sobre o seu DataTemplate pode ser o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top