Gdy okienko jest za małe, czyli WPF i problem z monitorem 4K

Gdy okienko jest za małe, czyli WPF i problem z monitorem 4K

Super! Dostałeś nowy monitor 4k! Nic tylko szaleć. Odpalasz swój program napisany w WPF i… gówno widzisz. Wszystko jest za małe. Jak to się dzieje? Przecież obiecali, że WPF ogarnia DPI, czy coś tam i nie trzeba już nic robić…

No tak. Niby ogarnia, ale nie ogarnia zmiany DPI przy kilku monitorach. To automatycznie robią aplikacje pisane w UWP. Natomiast w WPF trzeba zrobić mały, prosty myk. Ale spokojnie, nie musisz przepisywać aplikacji, stosować jakiś ViewBoxów, czy skomplikowanych obliczeń. Wszystko zostanie załatwione w pliku manifestu.

Windows 10 od wersji 1703 używa czegoś takiego jak Per-Monitor v2 awarness mode. Po krótce chodzi o to, że potrafi rozpoznać, kiedy okno aplikacji jest przesuwane na monitor z inną rozdzielczością. Teraz musimy poinformować naszą aplikację WPF, że też to potrafi:

Rozwiązanie

1. Utwórz plik manifestu (jeśli używasz domyślnego) lub otwórz jeśli już go masz.

Aby utworzyć plik manifestu:

  • kliknij prawym klawiszem myszy na projekt
  • wybierz Add -> New Item
  • odnajdź plik manifestu (wpisz w okienko do szukania: manifest)

2. Jeśli utworzyłeś nowy plik manifestu, to prawdopodobnie już wszystko masz. Wystarczy znaleźć fragment <application xmlns="urn:schemas-microsoft-com:asm.v3"> i go odkomentować.

3. Powinieneś w pliku manifestu mieć taki fragment:

<application xmlns="urn:schemas-microsoft-com:asm.v3">
  <windowsSettings>
    <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
  </windowsSettings>
</application>

I tyle. Upewnij się, że Twoja aplikacja używa tego pliku. Aby to zrobić:

  • kliknij prawym klawiszem myszy na projekt
  • wejdź w ustawienia (Properties)
  • na karcie Application upewnij sie, że w ComboBox Manifest masz podany swój plik manifestu.

Uruchom apkę… I to tyle.

Podziel się artykułem na: