Работа с большим окном формы

Недавно я столкнулся с проблемой при работе над пользовательской формой 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#, независимо от его положения? Пока эта часть не выпадает за пределы экрана.

Любые советы, подсказки и образцы с благодарностью!


person Community    schedule 11.01.2014    source источник
comment
Вы установили это WindowState=Maximized в окне ??   -  person Heena Patil    schedule 11.01.2014
comment
@Girish, я только что наткнулся на несколько ваших правок, которые были очень плохими. Пожалуйста, воздержитесь от добавления случайного жирного шрифта и форматирования кода в части текста вопросов. То, что вы делаете, граничит с вандализмом.   -  person Pekka    schedule 12.01.2014


Ответы (1)


Насколько я понимаю вашу проблему, возможность разработать макет, который масштабируется независимо от разрешения?

Одна вещь, которую я сделал, - это разместить сетку над окном, которое использует макет «звезды» (в основном на основе процентов), и внутри этих сеток поместил мои пользовательские элементы управления в окно просмотра. Это позволяет мне установить вертикальное и/или горизонтальное растяжение внутри сетки. Элементы управления будут автоматически масштабироваться в окне просмотра в макете сетки. Таким образом, независимо от разрешения или масштаба дисплея, компоновка и элементы управления будут корректироваться соответствующим образом.

Если вам нужно иметь статическое поле вокруг элементов управления... эти правила будут применяться. Если вам нужно создать какое-то ограничение масштаба, вам может потребоваться создать свойство зависимости, которое вычисляет необходимые размеры элементов управления и привязывает их ширину и высоту к вашим результатам.

person razblack    schedule 11.01.2014