2

Некоторое время назад я решил исправить uxtheme.dll (с помощью Universal Theme Patcher), чтобы разрешить использование неофициальных оконных тем. Проблема заключается в том, что приложения WPF, кажется, игнорируют пользовательскую тему для собственных элементов управления Windows (например, полосы прокрутки и кнопки) и вместо этого используют классическую тему для них.

Я впервые заметил это с Visual Studio 2010:

Visual Studio

Я думал, что это была ошибка в самой программе, но создание моего собственного приложения WPF дает тот же результат:

Пользовательское приложение WPF

Погугление показывает, что я не единственный человек с этой проблемой, но я не нашел решения.

Что я могу с этим поделать? Должен ли я попробовать другой uxtheme.dll uxtheme.dll? Или это то, что я получаю за попытку [задыхаться] настроить Windows?

4 ответа4

2

В настоящее время вы ничего не можете с этим поделать. Приложения WPF имеют свою собственную тему [которая не связана с темой Windows]. Лучшее, что я могу предложить, - это написать приложение или создать свою собственную dll, которая изменит тему WPF на ту, которая вам нравится, вы получите за это большое признание;)

1

Есть хороший обходной путь для этой проблемы. Следующая процедура скажет WPF использовать тему Windows Vista /7 вместо Windows Basic (для элементов управления).

Причина, по которой использование новой темы вызывает эти проблемы, заключается в том, что wpf выясняет, какая тема установлена, проверяя имя файла активированного в данный момент визуального стиля. Если имя «aero.msstyles», оно использует тему aero. Если это «luna.msstyles», он идет на один шаг дальше и проверяет текущую цветовую схему для точной настройки цветов (NormalColor, Metallic, Homestead - это цветовые схемы для Windows XP, Windows Vista полностью отбрасывает концепцию цветовой схемы в пользу окна аэро). В wpf также есть встроенная тема для "royale.msstyles". Если у файла темы есть имя, которое wpf не распознает, он просто использует базовую тему Windows.

Обходной путь? Переименуйте ваш визуальный стиль из "{what} .msstyles" в "aero.msstyles", затем измените связанные с ним файлы ".theme" в блокноте, чтобы учесть новое имя (обратите внимание, что теперь вы можете применять визуальный стиль только с темой файл). WPF теперь показывает стиль Windows Vista вместо Windows Basic ;-).

0

Я также задавал этот вопрос некоторое время назад и не мог найти никаких ответов.

https://stackoverflow.com/questions/7495906/visual-studio-2010-classic-system-theme

Единственная тема, которую поддерживает Visual Studio 2010, - это тема по умолчанию. Хотя я заметил, что некоторые темы поддерживают это, но большинство - нет.

Я попробовал все, в основном, запуск VS2010 в качестве администратора, запуск в режиме совместимости, установка / удаление SP1 и т.д.

Мы должны соблюдать правила Microsoft:P

0

извините, у меня не было достаточно «точек», чтобы комментировать или уточнить из контекста ответа AlexKven

Просто хотел добавить, для тех, кто заинтересован ...

в файле *.theme вы должны указать aero.msstyles в Titlecase. поэтому следует читать что-то вроде Path=%ResourceDir%\themes\path\to\Aero.msstyles а не ...\aero.msstyles .

смотрите также: github.com/riverar/uxstyle

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .