Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Списковые элементы управления

А.А. Волосевич | Иерархия классов | Свойства зависимостейи присоединённые свойства | Маршрутизируемыесобытия | Многопоточность в WPF | Приложения на основе страниц | Работа с панелью задач Windows 7 | Размер и выравнивание | Встроенные контейнеры компоновки | Прокрутка и декорирование содержимого |


Читайте также:
  1. A) расходуемые элементы
  2. Cвойства стандартных элементов управления
  3. Ii) Указатели на элементы массива
  4. III. Порядок формирования Молодежного парламента. Органы управления Молодежного парламента
  5. А) закреплено за ним на праве оперативного управления.
  6. Автоматизация управления процессом производства
  7. Адаптация системы управления

Списковые элементы управления (кратко – списки) могут хранить и представлять коллекцию элементов списка. Для большинства списков доступна гибкая настройка внешнего вида, а также функции фильтрации, группировки и сортировки данных, однако в данном параграфе рассматриваются только простейшие аспекты работы со списками.

Все списки наследуются от класса 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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Элементы управления содержимым| Прочие элементы управления

mybiblioteka.su - 2015-2024 год. (0.012 сек.)