WPF - Масштабирование при настройке соотношения сторон для сохранения горизонтальной заливки - PullRequest
0 голосов
/ 10 июня 2018

Так что большая часть вопросов и ответов, которые я исследовал здесь, связана с поддержанием соотношения сторон при масштабировании, но я пытаюсь добиться масштабирования при одновременной настройке соотношения сторон для поддержания горизонтальной заливки.Это может быть проще объяснить с помощью изображений, поэтому предположим, что это оригинал:

Original layout

Теперь, с этим текущим макетом, всякий раз, когда я изменяю размер самого внешнегоВ контейнере Viewbox масштабирует все внутри (равномерное растяжение), сохраняя соотношение сторон, поэтому, если я сжимаю контейнер по вертикали, я получаю несколько пробелов по сторонам:

Current undesired result after a vertical resize

В вышеописанном случае я хочу, чтобы ширина содержимого сначала растягивалась по горизонтали, а затем по мере необходимости масштабировалась по вертикали (например, размеры шрифта, высота элементов и т. Д.), Чтобы всесодержание продолжает быть видимым.

The desired result after a vertical resize

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

Horizontally wider parent container

Теперь я былэкспериментируя с различными первичными настройками Stretch, HorizontalAlignment и VerticalAlignment в Viewbox, и ближе всего к тому, что я хочу, это:

<Viewbox HorizontalAlignment="Stretch" VerticalAlignment="Top" Stretch="Fill">
  <MyUserControl />
</Viewbox>

Это дает мне желаемый тип макета «заливка», но проблемаочевидно, что он искажает содержимое по вертикали, поэтому, если я сжимаю контейнер по вертикали, я получаю сжатый текст, а не шрифты, которые просто настраиваются по размеру.

Учитывая мое понимание того, как работает Viewbox, я 'Я не удивлен этим, так что я предполагаю, что мне нужно вместо этого подключиться к событию SizeChanged в Viewbox и использовать его для регулировки высоты MyUserControl (и чтобы она опускалась до Grid).

Этот конкретный ответ выглядел многообещающе: Заставить Viewbox масштабировать по вертикали, но растягивать по горизонтали

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...