Язык программирования C#9 и платформа .NET5
Часть 496 из 642 Информация о книге
Имейте в виду, что для того, чтобы разделитель был виден на экране, потребуется присвоить значение его свойству
илиWidth(в зависимости от вертикального или горизонтального разделения). Ниже показана простая панельHeightс разделителем на первой колонке (Grid) из файлаGrid.Column="0":GridWithSplitter.xaml<Grid Background ="LightSteelBlue"><b> <!-- Определить колонки --></b><Grid.ColumnDefinitions><ColumnDefinition Width ="Auto"/><ColumnDefinition/></Grid.ColumnDefinitions><b> <!— Добавить метку в ячейку 0 --></b><Label x:Name="lblLeft" Background ="GreenYellow"Grid.Column="0" Content ="Left!"/><b> <!-- Определить разделитель —></b><GridSplitter Grid.Column ="0" Width ="5"/><b> <!-- Добавить метку в ячейку 1 -- ></b><Label x:Name="lblRight" Grid.Column ="1" Content ="Right!"/></Grid>Прежде всего, обратите внимание, что колонка, которая будет поддерживать разделитель, имеет свойство
, установленное вWidth. Вдобавок элементAutoиспользует синтаксис присоединяемых свойств для указания, с какой колонкой он работает. В выводе (рис. 25.7) можно заметить 5-пиксельный разделитель, который позволяет изменять размер каждого элементаGridSplitter. Из-за того, что для элементовLabelне было задано свойствоLabelилиHeight, они заполняют всю ячейку.WidthПозиционирование содержимого внутри панелей DockPanel
Панель
обычно применяется в качестве контейнера, который содержит любое количество дополнительных панелей для группирования связанного содержимого. ПанелиDockPanelиспользуют синтаксис присоединяемых свойств (как было показано в типахDockPanelиCanvas) для управления местом, куда будет пристыковываться каждый элемент внутриGrid.DockPanelВ файле
определена следующая простая панельSimpleDockPanel.xaml, которая дает результат, показанный на рис. 25.8:DockPanel<DockPanel LastChildFill ="True" Background="AliceBlue"><! -- Стыковать элементы к панели -- ><Label DockPanel.Dock ="Top" Name="lblInstruction" FontSize="15"Content="Enter CarInformation"/><Label DockPanel.Dock ="Left" Name="lblMake" Content="Make"/><Label DockPanel.Dock ="Right" Name="lblColor" Content="Color"/><Label DockPanel.Dock ="Bottom" Name="lblPetName" Content="Pet Name"/><Button Name="btnOK" Content="OK"/></DockPanel>На заметку! Если добавить множество элементов к одной стороне
, то они выстроятся вдоль указанной грани в порядке их объявления.DockPanelПреимущество применения типов
заключается в том, что при изменении пользователем размера окна каждый элемент остается прикрепленным к указанной (посредствомDockPanel) стороне панели. Также обратите внимание, что внутри открывающего дескриптораDockPanel.Dockв этом примере атрибутDockPanelустановлен вLastChildFill. Поскольку элементtrueна самом деле является "последним дочерним" элементом в контейнере, он будет растянут, чтобы занять все оставшееся пространство.ButtonВключение прокрутки в типах панелей
Полезно упомянуть, что в рамках инфраструктуры WPF поставляется класс
, который обеспечивает автоматическое поведение прокрутки данных внутри объектов панелей. Вот как он определяется в файлеScrollViewer:SimpleScrollViewer.xaml<ScrollViewer><StackPanel><Button Content ="First" Background = "Green" Height ="50"/><Button Content ="Second" Background = "Red" Height ="50"/><Button Content ="Third" Background = "Pink" Height ="50"/><Button Content ="Fourth" Background = "Yellow" Height ="50"/><Button Content ="Fifth" Background = "Blue" Height ="50"/>

