Язык программирования C#9 и платформа .NET5
Часть 493 из 642 Информация о книге
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></Canvas></b></Page>В верхней половине экрана отобразится окно, показанное на рис. 25.1.
Обратите внимание, что порядок объявления элементов содержимого внутри
не влияет на расчет местоположения; на самом деле местоположение основано на размере элемента управления и значениях его свойствCanvas,Canvas.Top,Canvas.BottomиCanvas.Left.Canvas.RightНа заметку! Если подэлементы внутри
не определяют специфическое местоположение с использованием синтаксиса присоединяемых свойств (например,CanvasиCanvas.Left), тогда они автоматически прикрепляются к левому верхнему углуCanvas.Тор.CanvasПрименение типа
может показаться предпочтительным способом организации содержимого (т.к. он выглядит настолько знакомым), но данному подходу присущи некоторые ограничения. Во-первых, элементы внутриCanvasне изменяют свои размеры динамически при использовании стилей или шаблонов (скажем, их шрифты остаются незатронутыми). Во-вторых, панельCanvasне пытается сохранять элементы видимыми, когда конечный пользователь уменьшает размер окна.CanvasПожалуй, наилучшим применением типа
является позиционирование графического содержимого. Например, при построении изображения с использованием XAML определенно понадобится сделать так, чтобы все линии, фигуры и текст оставались на своих местах, а не динамически перемещались в случае изменения пользователем размера окна. Мы еще вернемся кCanvasв главе 26 при обсуждении служб визуализации графики WPF.CanvasПозиционирование содержимого внутри панелей WrapPanel
Панель
позволяет определять содержимое, которое будет протекать сквозь панель, когда размер окна изменяется. При позиционировании элементов внутриWrapPanelих координаты верхнего левого и правого нижнего углов не указываются, как обычно делается вWrapPanel. Однако для каждого подэлемента допускается определение значений свойствCanvasиHeight(наряду с другими свойствами), чтобы управлять их общим размером в контейнере.WidthПоскольку содержимое внутри
не пристыковывается к заданной стороне панели, порядок объявления элементов играет важную роль (содержимое визуализируется от первого элемента до последнего). В файлеWrapPanelнаходится следующая разметка (заключенная внутрь определенияSimpleWrapPanel.xaml):Page<WrapPanel Background="LightSteelBlue"><Label x:Name="lblInstruction" Width="328" Height="27"FontSize="15" Content="Enter CarInformation"/><Label x:Name="lblMake" Content="Make"/><TextBox x:Name="txtMake" Width="193" Height="25"/><Label x:Name="lblColor" Content="Color"/><TextBox x:Name="txtColor" Width="193" Height="25"/><Label x:Name="lblPetName" Content="Pet Name"/><TextBox x:Name="txtPetName" Width="193" Height="25"/><Button x:Name="btnOK" Width="80" Content="OK"/></WrapPanel>Когда эта разметка загружена, при изменении ширины окна содержимое выглядит не особо привлекательно, т.к. оно перетекает слева направо внутри окна (рис. 25.2).
По умолчанию содержимое
перетекает слева направо. Тем не менее, если изменить значение свойстваWrapPanelнаOrientation, то можно заставить содержимое перетекать сверху вниз:Vertical<WrapPanel Background="LightSteelBlue" <b>Orientation ="Vertical"</b>>

