Недавно я столкнулся с проблемой при работе над пользовательской формой WPF. (разве они все равно не кастомные?). Я добавил следующие свойства в XAML.
AllowsTransparency="True"
ResizeMode="NoResize"
Height="945"
Width="1621"
WindowStyle="None"
А также пользовательское фоновое изображение с размером, указанным выше:
<Window.Background>
<ImageBrush ImageSource="Images/form_bg.png" />
</Window.Background>
И после его запуска некоторые кнопки, которые я добавил, просто исчезли. Только после того, как я увеличил размер кнопок (примерно 300
высоты и ширины), они начали появляться.
Мне потребовалось некоторое время, чтобы понять, что происходит... Windows изменила размер моей формы, потому что она не помещалась на моем 15
-дюймовом ноутбуке! Будучи всего лишь 1366 x 768
, моя Windows 8.1
просто изменила размер формы, сжав ее до, Я думаю, 70%
от исходного размера. Поскольку в моих элементах управления используются поля, а код XAML остался нетронутым, но фактический размер формы уменьшился, мои элементы управления просто рухнули.
Теперь очевидным решением было бы уменьшить изображение, возможно, немного обрезать его. Давайте возьмем 1280x1024
в качестве общего разрешения и подгоним его. Однако что, если кто-то, использующий монитор 1024x768
, запустит его, и он облажается с его стороны?
Мне удалось исправить изменение размера Windows, добавив свойства MinWidth и MinHeight и установив для них те же значения, что и для ширины и высоты, но после перемещения формы некоторые из нижних контент просто исчезает с экрана.
Итак, я ищу правильный способ справиться с этим. Достойное удобное решение. Если бы я мог изменить размер элементов управления, у пользователя могли бы возникнуть проблемы с чтением некоторого содержимого на маленьком экране.
В качестве альтернативы, возможно, я мог бы удерживать фокус на части окна, используя C#, независимо от его положения? Пока эта часть не выпадает за пределы экрана.
Любые советы, подсказки и образцы с благодарностью!