Выбери любимый жанр

Язык программирования C#9 и платформа .NET5 - Джепикс Филипп - Страница 493


Изменить размер шрифта:

493

        Width="328" Height="27"
FontSize="15"
Content="Enter Car Information"/>

    <Label x:Name="lblMake" Canvas.Left="17" Canvas.Top="60" Content="Make"/>

    <TextBox x:Name="txtMake" Canvas.Left="94" Canvas.Top="60"

        Width="193" Height="25"/>

    <Label x:Name="lblColor" Canvas.Left="17" Canvas.Top="109" Content="Color"/>

    <TextBox x:Name="txtColor" Canvas.Left="94" Canvas.Top="107"

        Width="193" Height="25"/>

    <Label x:Name="lblPetName" Canvas.Left="17" Canvas.Top="155"

        Content="Pet Name"/>

    <TextBox x:Name="txtPetName" Canvas.Left="94" Canvas.Top="153"

        Width="193" Height="25"/>

  <b>&lt;/Canvas&gt;</b>

&lt;/Page&gt;

В верхней половине экрана отобразится окно, показанное на рис. 25.1.

Язык программирования C#9 и платформа .NET5 - _198.png

Обратите внимание, что порядок объявления элементов содержимого внутри

Canvas
не влияет на расчет местоположения; на самом деле местоположение основано на размере элемента управления и значениях его свойств
Canvas.Top
,
Canvas.Bottom
,
Canvas.Left
и
Canvas.Right
.

На заметку! Если подэлементы внутри

Canvas
не определяют специфическое местоположение с использованием синтаксиса присоединяемых свойств (например,
Canvas.Left
и
Canvas.Тор
), тогда они автоматически прикрепляются к левому верхнему углу
Canvas
.

Применение типа

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

Пожалуй, наилучшим применением типа

Canvas
является позиционирование графического содержимого. Например, при построении изображения с использованием XAML определенно понадобится сделать так, чтобы все линии, фигуры и текст оставались на своих местах, а не динамически перемещались в случае изменения пользователем размера окна. Мы еще вернемся к
Canvas
в главе 26 при обсуждении служб визуализации графики WPF.

Позиционирование содержимого внутри панелей WrapPanel

Панель

WrapPanel
позволяет определять содержимое, которое будет протекать сквозь панель, когда размер окна изменяется. При позиционировании элементов внутри
WrapPanel
их координаты верхнего левого и правого нижнего углов не указываются, как обычно делается в
Canvas
. Однако для каждого подэлемента допускается определение значений свойств
Height
и
Width
(наряду с другими свойствами), чтобы управлять их общим размером в контейнере.

Поскольку содержимое внутри

WrapPanel
не пристыковывается к заданной стороне панели, порядок объявления элементов играет важную роль (содержимое визуализируется от первого элемента до последнего). В файле
SimpleWrapPanel.xaml
находится следующая разметка (заключенная внутрь определения
Page
):

&lt;WrapPanel Background=&quot;LightSteelBlue&quot;&gt;

  &lt;Label x:Name=&quot;lblInstruction&quot; Width=&quot;328&quot; Height=&quot;27&quot;

      FontSize=&quot;15&quot; Content=&quot;Enter Car
Information&quot;/&gt;

  &lt;Label x:Name=&quot;lblMake&quot; Content=&quot;Make&quot;/&gt;

  &lt;TextBox x:Name=&quot;txtMake&quot; Width=&quot;193&quot; Height=&quot;25&quot;/&gt;

  &lt;Label x:Name=&quot;lblColor&quot; Content=&quot;Color&quot;/&gt;

  &lt;TextBox x:Name=&quot;txtColor&quot; Width=&quot;193&quot; Height=&quot;25&quot;/&gt;

  &lt;Label x:Name=&quot;lblPetName&quot; Content=&quot;Pet Name&quot;/&gt;

  &lt;TextBox x:Name=&quot;txtPetName&quot; Width=&quot;193&quot; Height=&quot;25&quot;/&gt;

  &lt;Button x:Name=&quot;btnOK&quot; Width=&quot;80&quot; Content=&quot;OK&quot;/&gt;

&lt;/WrapPanel&gt;

Когда эта разметка загружена, при изменении ширины окна содержимое выглядит не особо привлекательно, т.к. оно перетекает слева направо внутри окна (рис. 25.2).

Язык программирования C#9 и платформа .NET5 - _199.png

По умолчанию содержимое

WrapPanel
перетекает слева направо. Тем не менее, если изменить значение свойства
Orientation
на
Vertical
, то можно заставить содержимое перетекать сверху вниз:

&lt;WrapPanel Background=&quot;LightSteelBlue&quot; <b>Orientation =&quot;Vertical&quot;</b>&gt;

493
Перейти на страницу:
Мир литературы

Жанры

Фантастика и фэнтези

Детективы и триллеры

Проза

Любовные романы

Приключения

Детские

Поэзия и драматургия

Старинная литература

Научно-образовательная

Компьютеры и интернет

Справочная литература

Документальная литература

Религия и духовность

Юмор

Дом и семья

Деловая литература

Жанр не определен

Техника

Прочее

Драматургия

Фольклор

Военное дело