При создании примера приложения Wpf по умолчанию из Visual Studio (Файл-> Новый проект-> Visual C# -> Windows Рабочий стол-> Приложение WPF (. NET Framework), запустите его и перетащите из Основной монитор (Настройки дисплея-> масштабирование 150%) на другой (Настройки дисплея-> Масштабирование 100%) масштабируется правильно, т.е. он выполняет те же функции, что и другие приложения, т.е. наполовину при перетаскивании его становится меньше, чтобы он занимал меньше физических пикселей и функций. обычно для остальных. Однако теперь строка заголовка пропускает пару пикселей справа:
![enter image description here](https://i.stack.imgur.com/4CYSe.png)
Я не видел, чтобы это происходило ни с одним другим приложение (и на первом мониторе оно выглядит нормально). Думая, что это связано с масштабированием / dpi-осведомленностью, я наткнулся на это пример приложения с поддержкой DPI на каждый монитор . При сборке и запуске оно не показывает проблема (но, как видно, заголовок строки заголовка не масштабировался):
![enter image description here](https://i.stack.imgur.com/fNAdL.png)
Часть того, что делает приложение, устанавливает [assembly: DisableDpiAwareness]
в AssemblyInfo.cs, и когда я применяю это к моему приложению, строка заголовка выглядит хорошо. Но теперь приложение вообще не поддерживает DPI, и текст на основном мониторе выглядит размытым, поэтому это не пригодное для использования решение.
Пример Windows Приложение Forms не имеет проблемы.
Что здесь происходит? Ошибка в WPF? Любой способ решить это? Я предполагаю, что мог бы начать с образца для каждого монитора и попытаться исправить его строку заголовка, масштабируя кнопки et c, но это кажется довольно трудоемким.