Читайте также:
|
|
Списковые элементы управления (кратко – списки) могут хранить и представлять коллекцию элементов списка. Для большинства списков доступна гибкая настройка внешнего вида, а также функции фильтрации, группировки и сортировки данных, однако в данном параграфе рассматриваются только простейшие аспекты работы со списками.
Все списки наследуются от класса ItemsControl, который определяет несколько полезных свойств:
· Items– коллекция ItemCollection, сохраняющая элементы списка (свойство доступно только для чтения).
· ItemsSource–свойство позволяет связать список с коллекцией данных. Свойство доступно для установки во время выполнения приложения.
· HasItems– булево свойство только для чтения. Показывает, имеются ли элементы в списке.
· DisplayMemberPath– строковое свойство, определяющее отображаемое значение для элемента списка.DisplayMemberPath поддерживает синтаксис, который называется путь к свойству. Путь к свойству напоминает запись свойства агрегированного объекта, но без операций приведения типа. Например, если у кнопки btn задать в качестве содержимого строку, путь к свойству в виде "btn.Content[0]"будет означать первый символ строки.
В разметке XAMLдочерние объекты списка автоматически рассматриваются как элементы списка. Правила отображения отдельного элемента аналогичны правилам, применяемым при показе содержимого ContentControl.
Списковые элементы управления можно разделить на три подгруппы:
1. Селекторы.
2. Меню.
3. Списки без категории.
Селекторы допускают индексацию и выбор элементов списка. К селекторам относятся элементы управления ComboBox, ListBox, ListView, DataGridи TabControl.Все селекторы наследуются от абстрактного класса Selector, которыйпредоставляет следующие свойства и события:
· SelectedIndex–целочисленный индекс (первого) выбранного элемента (или -1, если ничего не выбрано).
· SelectedItem–(первый) выбранный элемент списка.
· SelectedValue – значение выбранного элемента. Если не используется SelectedValuePath, значение совпадает с SelectedItem.
· SelectedValuePath –путь к свойству, определяющий значение выбранного элемента.
· SelectionChanged – событие, генерируемое при изменении SelectedItem.
В классе Selector определены два присоединяемых булевых свойства, используемых с элементами списка,–IsSelected и IsSelectionActive. Второе свойство является свойством только для чтения и позволяет узнать, установлен ли на выделенном элементе фокус. Кроме этого, класс Selectorимеет два присоединяемых события – Selectedи Unselected.
Элемент управления ListBox отображает список и допускает множественный выбор элементов. Эта возможность настраивается при помощи свойства SelectionMode, принимающего значения из одноимённого перечисления:
· Single(по умолчанию) – можно выбрать только один элемент списка.
· Multiple – можно выбрать несколько элементов. Щелчок по невыбранному элементу выбирает его, и наоборот.
· Extended– можно выбрать несколько элементов, используя клавиши SHIFTи CTRL.
У ListBox имеется коллекция SelectedItems, содержащая выбранные элементы списка. Каждый элемент в ListBox представлен объектом класса ListBoxItem, в котором определено булево свойство IsSelectedи событияSelected и Unselected.В разметке XAMLListBoxItem можно не использовать. Анализатор XAMLвыполняет самостоятельное «оборачивание» дочерних элементов в объекты ListBoxItem(замечание справедливо и для других списков).
<ListBox SelectionMode="Multiple">
<TextBlock>First Item</TextBlock>
<TextBlock>Second Item</TextBlock>
<Button>Third Item</Button>
</ListBox>
Рис. 15.Элемент управленияListBox.
Класс ComboBox позволяет выбрать один элемент из списка, отображая текущий выбор и раскрывая список элементов по требованию. Отдельный элемент ComboBox представлен объектом ComboBoxItem (унаследованным от ListBoxItem).
<Canvas>
<ComboBox Name="cbx" SelectedIndex="0" Width="134">
<ComboBoxItem>First Item</ComboBoxItem>
<ComboBoxItem>Second Item</ComboBoxItem>
<ComboBoxItem>Third Item</ComboBoxItem>
</ComboBox>
<Button Padding="10,3" Canvas.Right="5" Canvas.Bottom="5"
Content="Enter" Click="Button_Click" />
</Canvas>
privatevoid Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(cbx.SelectionBoxItem.ToString(), "Selected");
}
Рис. 16.Элемент управленияComboBox.
Для описания состояния списка служит булево свойство IsDropDownOpen и связанные события DropDownOpened/DropDownClosed. Свойства IsEditableиIsReadOnly могут использоваться, чтобы подсвечивать и отображать элемент списка при вводе текстовой информации, связанной с элементом.Текстовая информация определяется в элементе списка при помощи свойства TextSearch.Text или в самом ComboBox при помощи свойства TextSearch.TextPath.
Элемент управления ListView унаследован от ListBox. Этот список позволяет настроить свой внешнийвид при помощи свойства Viewс типомViewBase. В WPFимеется один наследник абстрактного класса ViewBase –класс GridView. При помощи GridViewэлемент управления ListView отображает данные в виде таблицы с колонками. Каждая колонкатаблицы GridView – это объект класса GridViewColumn, помещённый в коллекцию GridView.Columns. У колонки настраивается ширина, заголовок, отображаемые в колонке значения. GridView поддерживает изменение размеров колонок и их перетаскивание во время работы приложения.
<ListView xmlns:sys="clr-namespace:System;assembly=mscorlib">
<ListView.View>
<GridView>
<GridViewColumn Header="Date" Width="70"/>
<GridViewColumn Header="Day of Week"
DisplayMemberBinding="{Binding DayOfWeek}"/>
<GridViewColumn Header="Year"
DisplayMemberBinding="{Binding Year}"/>
</GridView>
</ListView.View>
<sys:DateTime>1/1/2010</sys:DateTime>
<sys:DateTime>1/2/2010</sys:DateTime>
<sys:DateTime>1/3/2010</sys:DateTime>
</ListView>
Рис. 17.Элемент управленияListView.
Элемент управления TabControl– это простой наборстраницсзакладками:
<TabControl SelectedIndex="2">
<TabItem Header="Tab 1">Content for Tab 1</TabItem>
<TabItem Header="Tab 2">Content for Tab 2</TabItem>
<TabItem Header="Tab 3">Content for Tab 3</TabItem>
</TabControl>
Рис. 18.Элемент управленияTabControl.
По умолчанию закладки в TabControlрасположены вверху. Их положение можно изменить, используя свойство TabStripPlacement. Каждая страница в TabControl– это объект класса TabItem. Класс TabItem –контейнер с заголовком (подобно элементам GroupBox или Expander).
Перейдём к рассмотрению элементов управления из категории меню – Menuи ContextMenu.Класс Menuможет содержать коллекцию любых объектов, но ожидается, что будут использованы объекты MenuItemиSeparator.Separator – простой элемент, представляющий разделитель пунктов меню. MenuItem– это контейнер с заголовком (наследникHeaderedItemsControl). В случае MenuItem заголовок определяет отображаемый пункт меню, а свойство содержимого Items может содержать элементы подменю. MenuItemподдерживает «горячие клавиши». Этот класс также содержит свойства Iconи IsCheckableи определяет события Checked, Unchecked, SubmenuOpened, SubmenuClosed, Click.
<DockPanel LastChildFill="False">
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Header="_New..."/>
<MenuItem Header="_Open..."/>
<Separator/>
<MenuItem Header="Sen_d To">
<MenuItem Header="Mail Recipient"/>
<MenuItem Header="My Documents"/>
</MenuItem>
</MenuItem>
<MenuItem Header="_Edit"></MenuItem>
<MenuItem Header="_View"></MenuItem>
</Menu>
</DockPanel>
Рис. 19.Пример меню.
Класс ContextMenu служит для представления контекстного меню некоторого элемента.ОбъектContextMenu нельзя поместить в дерево элементов, а следует задавать как значение одноимённого свойства, определённого в классе FrameworkElement.
<ListBox>
<ListBox.ContextMenu>
<ContextMenu><!-- пункты меню --></ContextMenu>
</ListBox.ContextMenu>
</ListBox>
ContextMenu – этоконтейнеробъектовMenuItem.В классе ContextMenu определено несколько свойств для настройки места появления контекстного меню относительно элемента, с которым оно связано.
Рассмотрим списковые элементы без категории. Элемент управления TreeView отображает иерархию данных в виде дерева с узлами, которые могут быть свернуты и раскрыты. Каждый элемент в TreeView является объектом TreeViewItem. Класс TreeViewItem напоминает MenuItem – это тоже контейнер с заголовком Header и коллекцией дочерних элементов Items. TreeViewItemсодержитбулевысвойстваIsExpandedиIsSelected, атакжесобытияExpanded, Collapsed, Selected, Unselected.
<TreeView>
<TreeViewItem Header="Desktop">
<TreeViewItem Header="Computer" />
<TreeViewItem Header="Recycle Bin" />
<TreeViewItem Header="Control Panel">
<TreeViewItem Header="Programs" />
<TreeViewItem Header="Security" />
<TreeViewItem Header="User Accounts" />
</TreeViewItem>
<TreeViewItem Header="Network" />
</TreeViewItem>
</TreeView>
Рис. 20.ПростойTreeView.
Элемент управления ToolBarпредставляет панель инструментов. Он просто группирует кнопки, разделители (Separator) и другие дочерние элементы на одной панели[9]. Хотя ToolBar можно разместить в произвольном месте, обычно один или несколько таких объектов размещают внутри элемента ToolBarTray, что позволяет перетаскивать и переупорядочить панели инструментов.Элемент управления SatusBar группирует элементы подобно ToolBarили Menu.Обычно элементSatusBarразмещается в нижней части окна.
Дата добавления: 2015-11-14; просмотров: 48 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Элементы управления содержимым | | | Прочие элементы управления |