#510 – Заголовок Expander может быть любым

Свойство Header у контрола Expander не строкового типа. Вы можете установить любой объект и любой объект будет отображен сверху Expander, в любом случае свернут или развернут ли Expander.

В примере ниже, мы используем Image для заголовка Expander и GroupBox для контента.

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

08.03.2012

#507 – Expander контрол позволяет Развернуть/Свернуть набор контролов

Вы можете использовать Expander контрол для скрытия набора контролов. Когда вы нажимаете на Expander, скрытые контролы показываются. Когда вы нажимаете снова, то они исчезают опять.

Контрол Expander является ContentControl, поэтому содержит только единственный дочерний элемент. Обычно это контрол панели, чтобы вы могли добавить несколько контролов в панель.

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

05.03.2012

#357 – RadioButton является ContentControl

Так как контрол RadioButton является ContentControl, он может содержать единственный дочерний элемент, который может быть любым объектом .NET. Когда вы указываете значение для свойства Content в XAML, то вы указывается текстовую строку, которая используется как метка для радиокнопки. Но вы можете также установить содержимое некоторым другим контролом.

В примере ниже мы устанавливаем для каждой RadioButton содержимым StackPanel которая содержит Image и Label. Пользователь все еще может выбирать только один элемент одновременно в группе.

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

04.08.2011

#297 – Создание зеркального изображения для контрола изображения

Вы можете перевернуть любое изображение или контрол, создавая зеркальное изображение с помощью 2D масштабирующего преобразования.

Масштабирующее преобразование представляет собой экземпляр класса ScaleTransform. Вы можете масштабировать виртуальное представление любого изображения или контрола по оси X или Y (или обоим сразу).

Свойства ScaleX и ScaleY класс ScaleTransform представляют собой коэффициенты в заданном измерении. По умолчанию значения положительные, но вы можете использовать значения меньше нуля для указания того что объект поворачивается в заданном измерении.

В примере ниже мы уменьшаем изображение на половину его оригинального размера и переворачиваем в X измерении.

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

11.05.2011

#284 – Делаем Image прозрачным используя свойство Opacity

Так как контрол Image наследуется (напрямую) от UIElement, то он имеет свойство Opacity. Свойство Opacity позволяет контенту за изображением быть видимым через изображение. Значение свойства лежит в диапазоне от 0.0 до 1.0, 0.0 означает, что изображение полностью прозрачно (не отображается вообще) и 1.0 означает, что изображение полностью не прозрачно (ничего сквозь него невидно).

В примере ниже мы привязываем значение свойства Slider'а к свойству Opacity у контрола Image, так что мы можем легко менять прозрачность. Мы так же заполнили фон окна градиентной заливкой.

Когда Opacity равно 1.0, то изображение полностью непрозрачно и градиент не виден сквозь изображение.

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

22.04.2011

#277 – У изображений есть встроенная информация по DpiX и DpiY

Зачастую когда вы задаете Stretch=None для контрола Image, вы можете получить сообщение, что изображение не может быть отображено в ожидаемом размере в пикселях для высоты/ширины. Это случается когда разрешение изображения (DPI) не совпадает с системным DPI.

В файле изображений (таких как .png или .jpg) содержится информация в пикселях о ширине/высоте. Файл изображения может также содержать информацию о DpiX и DpiY (разрешение). Эта информация о разрешении присутствует не во всех файлах.

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

15.04.2011

#251 Встраивание UIElement внутри FlowDocument

Вы можете встроить любые UIElement в FlowDocument используя тип блока BlockUIContainer. Это позволяет вставлять контролы в середину документа. Зная, что Panel наследуются от UIElement вы можете вставить не только одиночный элемент, но и контейнер который может содержать другие контролы.

Далее пример:

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

20.03.2011

#179 Контролы панели, которые могут содержать потомков типа UIElement

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

Несколько примеров классов наследников Panel:

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

07.01.2011

#33 – Класс Control

Класс Control наследует от FrameworkElement и является базовым классом для всех элементов управления, с которыми пользователь взаимодействует. Примеры элементов управления включают: TextBox, Label, ListBox, ComboBox и Button. Контейнер элементов, таких как Panel и Grid не являются элементами управления.

Класс Control расширяет FrameworkElement путем добавления функциональности:

  • Изменение внешнего вида элемента управления с помощью шаблонов
  • Поддержка визуальных элементов, таких как шрифты, границы и цвет фона

Оригинал: #33 – Control Class

14.08.2010

#27 – Иерархия классов

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

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

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

08.08.2010

#21 – WPF Control Sampler

В WPF контрол является визуальным компонентом, который можно разместить в окне или на странице.

Вот лишь несколько примеров общих элементов управления WPF с которыми пользователь взаимодействует.

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

02.08.2010