У меня есть приложение WPF, на котором размещаются элементы управления winforms. Когда я запускаю приложение в Windows 8.1. Ui загроможден. Во время работы я меняю настройки DPi и разрешения. Как бы то ни было, это сделать dpiaware приложения ложным. Из моего исследования я знаю, что могу использовать манифест или использовать api setdpiawareness из shcore.dll (win8.1). Явление более подходит для меня. Я проверил Disable DPI awareness for WPF application.Dpiaware = false в приложении WPF
Мой запрос больше касается манифеста, Я пишу пример приложения, чтобы сделать dpiaware ложным. Я уже вставляю манифест, ниже это то, как он выглядит.
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>false</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
Я пытаюсь запустить ниже, и каждый раз, когда значение Dpiaware верно. Любая вещь, которую я делаю неправильно в манифесте? или какие-либо альтернативы?
[DllImport("user32.dll", SetLastError = true)]
static extern bool IsProcessDPIAware();
protected override void OnStartup(StartupEventArgs e)
{
Process_DPI_Awareness p;
p = 0;
base.OnStartup(e);
bool h = IsProcessDPIAware();
if(h)
MessageBox.Show("Dpi is 1");
else
MessageBox.Show("Dpi is not true");
}
Используйте атрибут [[DisableDpiAwareness] (https://msdn.microsoft.com/en-us/library/system.windows.media.disabledpiawarenessattribute%28v=vs.110%29.aspx)]. –
У меня были начальные икоты, проходящие через дизайн. Но, по существу, после правильного дизайна этот атрибут работал великолепно! –