Recurso WPF mesclado para Application.Resources, mas não resolvido em tempo de execução

StackOverflow https://stackoverflow.com/questions/2543726

Pergunta

Eu tenho um pincel que faz parte de um ResourceDictionary que é fundido para Application.Resources.

Mas, por algum motivo, não é resolvido em tempo de execução quando um estilo está sendo aplicado a um dos controles. No entanto, se eu ligar para o Application.current.findResource ("pushname") da janela imediata no momento em que a exceção é lançada, o recurso é encontrado.

Estou esquecendo de algo? O WPF não deveria tentar procurar o recurso nos recursos do aplicativo?

ATUALIZARO aplicativo é muito grande, então não posso postar todo o código real, mas aqui está a maneira como os recursos são mesclados e usados:

Brushes.xaml

<ResourceDictionary ...>
  <SolidColorBrush x:Key="BrushName" Color="#12345678" />
</ResourceDictionary>

SomeStyles.xaml

<ResourceDictionary ...>
  <Style x:Key="SomeStyle">
    <Setter Property="SomeProperty" Value="{StaticResource BrushName}" />
  </Style>
</ResourceDictionary>

App.xaml

<Application ...>
  <Application.Resources>

    <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Brushes.xaml" />
        <ResourceDictionary Source="SomeStyles.xaml" />
      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>


  </Application.Resources>
</Application ...>

E então algum controle pode usar o estilo usando o recurso como este:

...
Style={StaticResource SomeStyle}
...

ATUALIZAR

Parece acontecer aos menus e controles criados no código. Pode estar relacionado a esses controles e menus que não são partes da árvore visual de nenhuma janela?

Foi útil?

Solução

Seu dicionário de Somestyle.xaml precisa fazer referência diretamente a pincéis.xaml Dicionário, assim:

<ResourceDictionary ...>
  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Brushes.xaml" />
  </ResourceDictionary.MergedDictionaries>
  <Style x:Key="SomeStyle">
    <Setter Property="SomeProperty" Value="{StaticResource BrushName}" />
  </Style>
</ResourceDictionary>

O StaticResources pesquise apenas a árvore do dicionário atual, portanto, você precisa transmitir quaisquer recursos necessários para fazer referência.

Outras dicas

Vá para a Administração Central -> Gerenciar o aplicativo de serviço -> Aplicativo de serviço de perfil do usuário.

Em "Configurações do meu site" Você tem "configurar meu site", aqui você pode atualizar o valor para "My Site Host Local" para corresponder à nova configuração.Certifique-se de clicar em "OK" na parte inferior.

Não tenho certeza se isso passa imediatamente ou se houver alguns trabalhos de temporizador que precisam ser executados antes que as alterações sejam visíveis na GUI para seus usuários.

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