The question is more line by line:
Why is Window.ActualWidth reporting a width that is not the "real" window width?
The answer is that what looks like the full width of the window does not match the full width.
When you set Width , query ActualWidth or even use GetWindowRect to get "no lies that think of my window width", you set or get the window width including the invisible parts.
These invisible parts, especially in Windows 10, contain a little extra space, allowing users to easily resize the window, even if they are slightly different from the border:

(note that my mouse is not on the border, but a little to the right)
This means that when you maximize your window, your width is still "padded" with this invisible space, and therefore your window will be larger than your screen.
How can you get the width of the extra space? GetSystemMetrics with SM_CXSIZEFRAME and SM_CXPADDEDBORDER is your friend here (example includes code from pinvoke.net ):
int extraBorderStuff = GetSystemMetrics(SystemMetric.SM_CXSIZEFRAME) + GetSystemMetrics(SystemMetric.SM_CXPADDEDBORDER); double realWidthForSure = ActualWidth - borderSize * 2;
If you then enlarge your window, you should notice that realWidthForSure should equal your 1920px, which you expect.
Friendlyguy
source share