Ajuda: Alterar o manifesto do aplicativo WPF?
-
11-09-2019 - |
Pergunta
Eu postei um comentário para a Microsoft que as caixas de diálogo no WPF não estão ativadas pelo VisualStyle.
Joe Castro postou uma solução alternativa lá que eu realmente não entendo como alcançar, alguém pode ajudar?
Aqui está sua resposta:
Por motivos de compacto do aplicativo, os aplicativos não usam, por padrão, o V6 dos controles comuns do sistema (disponível desde o XP). Isso realmente não se aplica ao WPF, mas você também o vê em algumas situações ao usar os controles nativos, para que não seja tão prevalente quanto o WinForms, onde suas APIs estão apenas envolvendo os controles padrão.
Para corrigir isso no WPF, você precisa optar explicitamente ao V6 COMCTL32, especificando-o em um manifesto em seu exe. Isso deve ser feito no EXE, para que o WPF não possa fazer isso como parte de suas DLLs. EnableVisualStyles faz isso em tempo de execução, mas dessa maneira geralmente é melhor.
Por exemplo, algo como:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<description>MyExe.exe</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"/>
</dependentAssembly>
</dependency>
</assembly>
Solução
Eu escrevi sobre isso no meu blog há algum tempo:
Essas postagens descrevem o problema e a solução: http://www.nbdtech.com/blog/archive/2008/05/28/why-am-i-getting-velha-fille-fialogs-and-message.aspx , http://www.nbdtech.com/blog/archive/2008/06/08/will-setting-a-manifest-solve-my-wpf-message-box-style.aspx
Este post é o que você está procurando: http://www.nbdtech.com/blog/archive/2008/06/16/the-application-manifest-needed-for-xp-and-vista-tyle-file.aspx
E isso fala sobre como obter o estilo Vista para abrir e salvar diálogos: http://www.nbdtech.com/blog/archive/2008/07/15/vista-style-open-and-save-dialogs-with-wpf-without-using.aspx
Outras dicas
No Visual Basic, as propriedades do projeto são estruturadas de maneira um pouco diferente. Se você encontrar esta pergunta e está em VB no VS2010, siga estas instruções para gerar um App.Manifest Arquivo.
- Para criar um App.Manifest Arquivo, vá para o seu projeto e selecione Propriedades. Em seguida, clique em Exibir as configurações da janela, debaixo de Inscrição aba.
- Isso deve gerar e abrir o App.Manifest arquivo, que é salvo em seu Minha pasta de projeto
Leitura adicional: Estilo de janela WPF MessageBox