Вопрос

Я отправил комментарий в Microsoft что диалоговые окна в WPF не поддерживают VisualStyle.

Джо Кастро опубликовал там обходной путь, которого я не совсем понимаю, как его достичь. Может ли кто-нибудь помочь?

Вот его ответ:

По причинам совместимости приложений приложения по умолчанию не используют v6 общих элементов управления системы (доступно начиная с XP).На самом деле это не относится к WPF, но вы также видите это только в некоторых ситуациях при использовании собственных элементов управления, поэтому это не так распространено, как WinForms, где их API просто оборачивают стандартные элементы управления.

Чтобы исправить это в WPF, вам необходимо явно подписаться на v6 comctl32, указав его в манифесте вашего exe.Это необходимо сделать в exe-файле, поэтому WPF не может сделать это как часть своих DLL.EnableVisualStyles делает это во время выполнения, но этот способ, как правило, лучше.

Например, что-то вроде:

<?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>
Это было полезно?

Решение

Я писал об этом некоторое время назад в своем блоге:

Эти сообщения описывают проблему и решение: http://www.nbdtech.com/blog/archive/2008/05/28/Why-am-I-Getting-Old-Style-File-Dialogs-and-Message.aspx , http://www.nbdtech.com/blog/archive/2008/06/08/Will-Setting-a-Manifest-Solve-My-WPF-Message-Box-Style.aspx

Этот пост - то, что вы ищете: http://www.nbdtech.com/blog/archive/2008/06/16/The-Application-Manifest-Needed-for-XP-and-Vista-Style-File.aspx

Здесь рассказывается о том, как получить стиль Vista для диалогов открытия и сохранения файлов: http://www.nbdtech.com/blog/archive/2008/07/15/Vista-style-open-and-save-dialogs-with-WPF-without-using.aspx

Другие советы

В Visual Basic свойства проекта структурированы немного иначе.Если вы нашли этот вопрос и находитесь в VB в VS2010, следуйте этим инструкциям, чтобы создать приложение.манифест файл.

  1. Чтобы создать приложение.манифест файл, перейдите в свой проект и выберите свойства.Затем нажмите Просмотр настроек окна, под Приложение вкладка.
    • ViewWindowSettings
  2. Это должно создать и открыть приложение.манифест файл, который сохраняется в вашем Моя папка проекта
    • app.manifest

Дальнейшее чтение: Стиль окна WPF MessageBox

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top