#422 – Установка минимального Height и Width в Rows и Columns для Grid

Вы можете установить минимальную высоту для строки в Grid, используя свойство MinHeight. Вы также можете установить минимальную ширину колонки используя свойство MinWidth.

В примере ниже мы установили минимальную ширину первой колонки, даже если значение свойства Width установлено в Auto. Мы также установили минимум для 4-й колонки, ширина которой установлена в 1* (аналогично ширине 3-й конки).

Читать полностью »

03.11.2011

#399 – WrapPanel изменяет разметку потомков, когда изменяются их размеры

Мы видели что WrapPanel располагает свои дочерние элементы по горизонтали, заполняя за раз по строке или по вертикале, заполняя за раз по колонке.

WrapPanel так же пересчитывает разметку своих дочерних элементов, в то время как размер самой WrapPanel изменяется. В этом случае расположение дочерних элементов изменяется.

Предположим, что у нас есть WrapPanel у которой свойство Orientation установлено в значение Horizontal. Это расположит дочерние элементы слева на право, на первой строке и начнет вторую строку как только первая заполнится.

Читать полностью »

03.10.2011

#398 – Элемент WrapPanel

Элемент WrapPanel служит контейнером для коллекции дочерних элементов, располагая свои дочерние элементы одним из двух способов:

  • В горизонтальной ориентации (по умолчанию). Дочерние элементы добавляются слева на право, пока строка не заполнится и потом переносятся на следующую строку
  • В вертикальной ориентации. Дочерние элементы добавляются сверху вниз, пока колонка не заполнится и затем переносятся на следующую колонку

Читать полностью »

30.09.2011

#392 – Использование свойства SnapsToDevicePixels для предотвращения антиалиасинга

Потому что WPF позиционирует GUI элементы, используя машинно-независимые единицы, маленькие GUI элементы могут выглядеть нечеткими при отображении за счет сглаживания (антиалиасинга).

Обратите внимание не согласованный (не одинаковый) внешний вид вертикальных линий в примере ниже. Каждая линия должна быть одинакового размера, так как мы определили ее в 1 WPF unit шириной (1 пиксель на 96 dpi).

Читать полностью »

22.09.2011

#391 – Антиалиасинг может привести к нечеткому отображению GUI элементов

Вы определяете позицию и размер для GUI элементов в WPF используя машинно независимые единица (device-independent units) В одной единице 1/96 дюйма или 1 пиксель на 96 dpi экране. Это позволяет объектам иметь постоянный физический размер, несмотря на разрешение.

Из за того что вы не указываете в терминах пикселей, края объектов не всегда выстраиваются в точности по пикселям. WPF использует антиалиасинг, когда отображает GUI элементы. Для примера, если элемент только занимает половину пикселя, то этот пиксель отображается в половину яркости.

Читать полностью »

21.09.2011

#388 – Разметка контейнеров не предоставляет скроллинг

Ни один из контролов панелей WPF (контейнеры) автоматически не обеспечивают прокрутку. Если их дочерние элементы не вписываются в доступное пространство, то дочерние контролы обрезаются.

В примере ниже мы у нас есть вертикальная StackPanel с серией контролов типа Label. Помните, что первая надпись не подстраивает под размер окна и прикреплена справа. Последняя надпись аналогично не подстраивается и прикреплена снизу окна.

Читать полностью »

15.09.2011

#387 – Установка цвета фона для того чтобы увидеть как работает разметка

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

Предположим у нас есть GUI который включает несколько элементов управления и две вложенные панели.

Читать полностью »

15.09.2011

#386 – Разметка = Панели + FrameworkElements + Alignment/Margins/Padding

Разметка в WPF это процесс, который определяет размер и позиции всех элементов пользовательского интерфейса.

Пользовательский интерфейс состоит из внешнего Window или Page которые содержат иерархию элементов пользовательского интерфейса. Иерархия может содержать личные элементы пользовательского интерфейса или панели, которые по очереди содержат коллекцию дочерних FrameworkElements.

Panel это абстрактный класс, который служит родительским для конкретных панелей разметки, включая Canvas, DockPanel, Grid, StackPanel и WrapPanel.

Читать полностью »

14.09.2011

#385 – Вы можете вкладывать панели контролов

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

В примере на самом верхнем уровне расположен трех строчный Grid, который содержит StackPanel в первой строке, 2×2 Grid во второй и другую StackPanel в третьей.

Читать полностью »

13.09.2011

#384 – Преимущества Flow-Based разметки

WPF предоставляет ряд преимуществ flow-based разметки по умолчанию.

Независимость от разрешения

Это не настоящие преимущество именно flow-based разметки, но преимущество, основанное на утверждении, что указание в WPF позиций и размеров в аппаратно независимых единицах, лучше чем в пикселях. Если текущие настройки DPI совпадают с нативными DPI устройства, тогда фактический размер GUI элементов будет, как ожидалось.

Читать полностью »

12.09.2011