Кажется, я смог исправить свои проблемы, позвонив SetProcessDpiAwareness
с параметром unaware до загрузки WPF. SetProcessDPIAware
по-прежнему вызывается WPF и возвращает true, но IsProcessDPIAware всегда возвращает false, и мое приложение выглядит нормально в моих ранних тестах.
[DllImport("SHCore.dll", SetLastError = true)]
private static extern bool SetProcessDpiAwareness(PROCESS_DPI_AWARENESS awareness);
private enum PROCESS_DPI_AWARENESS {
Process_DPI_Unaware = 0,
Process_System_DPI_Aware = 1,
Process_Per_Monitor_DPI_Aware = 2
}
Затем вызывайте это перед любым кодом пользовательского интерфейса:
SetProcessDpiAwareness(PROCESS_DPI_AWARENESS.Process_DPI_Unaware);