Ideally, applications will use a higher pixel density to show more detail. For example, a high-resolution monitor may display icons on the toolbar of the same size, but use additional pixels to render sharper graphics. This way you can keep the same basic layout, but offer more clear and detailed information. For various reasons, this decision was not possible in the past. Although you can resize graphic content that is drawn using GDI / GDI +, User32 (which generates visual effects for common controls) does not support true scaling.
WPF does not suffer from this problem because it displays all user interface elements, from simple forms to ordinary controls, such as buttons. As a result, if you create a 1-inch-wide button on a computer monitor, it can remain 1 inch apart on a high-resolution monitor. WPF will simply display it in more detail and with more pixels.
WPF bases its scaling on the DPI setting of the system, not the DPI of your physical display device. It uses the DPI setting of the system when calculating sizes.
WPF Units
The WPF window and all elements within it are measured using device-independent devices. A single device-independent unit is identified as 1/96 of an inch. To understand what this means in practice, you need to consider an example.
Imagine you are creating a small button in WPF that is 96 by 96 units in size. If you use the standard Windows DPI setting (96 dpi), each device-independent block corresponds to one real physical pixel. This is because WPF uses this calculation:
[Physical Unit Size] = [Device-Independent Unit Size] × [System DPI] = 1/96 inch × 96 dpi = 1 pixel
In fact, WPF assumes that it takes 96 pixels to make an inch, because Windows reports that through the DPI setting of the system. However, the reality depends on your display device.
For example, consider a 20-inch LCD monitor with a maximum resolution of 1600 by 1200 pixels. Using the Pythagoras dash, you can calculate the pixel density for this monitor, as shown below:
[Screen DPI] = ((Sqroot of)(1600*1600)+(1200*1200))pixels/19 inches = 100dpi
In this case, the pixel density reaches 100 dpi, which is slightly higher than Windows suggests. As a result, the 96-by-96-pixel button on this monitor will be slightly less than 1 inch.
On the other hand, consider a 15-inch LCD monitor with a resolution of 1024 by 768. Here, the pixel density drops to about 85 dots per inch, so the 96-by-96 button is a little more than 1 inch.
In both cases, if you reduce the size of the screen (for example, switching to a resolution of 800 by 600), the button (and every other screen element) will seem proportionally larger. This is because the DPI system setting remains 96 dpi. In other words, Windows continues to assume that 96 pixels are required per inch, although lower resolution requires much fewer pixels.
Link: Pro WPF in C # 2008: Windows Presentation Foundation with .NET 3.5, Second Edition