Опубликован: 15.06.2011 | Доступ: свободный | Студентов: 708 / 59 | Оценка: 4.25 / 4.00 | Длительность: 14:09:00
Лекция 11:

Silverlight. Элементы управления

Элементы работы с данными
ListBox

Элемент управления ListBox (Рис. 22.14) используется для представления содержимого в виде упорядоченного списка. Это достаточно гибкий элемент управления, так что элементы списка могут создаваться из содержимого любого типа.

Таблица 22.7. Ключевые свойства класса System.Windows.Controls. ListBox
Свойство Тип Описание
ItemContainerStyle Style Возвращает или задает стиль, применяемый к элементу контейнера, сгенерированному для каждого элемента.
SelectedIndex Int32 Возвращает или задает индекс первого элемента в текущем выбранном элементе или минус единицу (-1), если элемент не выбран.
SelectedItem Object Возвращает или задает первый элемент или возвращает значение NULL, если элемент не выбран.
SelectedValue Object Возвращает или задает значение SelectedItem, получаемое с помощью SelectedValuePath.
SelectionMode SelectionMode Возвращает или задает поведение выбора для списка ListBox. (Принимает значения: Single если нужно выбрать один элемент, Multiple если пользователь выбирает несколько элементов из списка, Extended если пользователь выбирает несколько элементов из списка используя специальные клавиши, таки как Ctrl или Shift.
Пример элемента управления ListBox

Рис. 22.14. Пример элемента управления ListBox

XAML код элемента ListBox представленного на Рис. 22.14:

<TextBlock FontWeight="Bold">
ListBox with Simple items (TextBlock)
</TextBlock>
<ListBox Canvas.Top="50" Canvas.Left="40" Width="200">
<ListBox.Items>
<ListBoxItem>
<TextBlock Text="Strategic Advisory"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="Training"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="Development"/>
</ListBoxItem>
<ListBoxItem>
<TextBlock Text="Technical Publishing"/>
</ListBoxItem>
</ListBox. Items>
</ListBox>
ComboBox

Элемент управления ComboBox (Поле со списком) используется для представления списка доступных для выбора элементов. При этом отображается только выбранный элемент, но имеется выпадающее меню с полным списком доступных для выбора элементов.

Таблица 22.8. Ключевые свойства класса System.Windows.Controls.ComboBox
Свойство Тип Описание
IsEditable bool Возвращает или задает значение, разрешающее либо запрещающее редактировать текст в текстовом поле элемента управления ComboBox.
ItemContainerStyle Style Возвращает или задает стиль, который применяется к контейнеру, создаваемому для каждого элемента поля со списком.
SelectedIndex Int32 Возвращает или задает индекс, выбранного элемента.
SelectedItem Object Возвращает или задает первый выбранный элемент.
SelectedValue Object Возвращает или задает значение выбранного элемента, используя свойство SelectedValuePath (Новое свойство в Silverlight 4).
 Пример элемента управления ComboBox

Рис. 22.15. Пример элемента управления ComboBox

XAML код элемента ComboBox представленного на Рис. 22.15:

<TextBlock FontWeight="Bold">
ComboBox with Simple items (TextBlock)
</TextBlock>
<ComboBox>
<ComboBox.Items>
<ComboBoxItem>
<TextBlock Text="Strategic Advisory"/>
</ComboBoxItem>
<ComboBoxItem>
<TextBlock Text="Training"/>
</ComboBoxItem>
<ComboBoxItem>
<TextBlock Text="Development"/>
</ComboBoxItem>
<ComboBoxItem>
<TextBlock Text="Technical Publishing"/>
</ComboBoxItem>
</ComboBox>
DataGrid

Элемент управления DataGrid разработан для облегчения задачи по отображению данных в формате таблицы. Это сетка данных, связанная с источником данных. Для работы с данным элементом необходимо подключить пространство имен System.Windows.Data и добавить в XAML код строчку:

xmlns:data="clrnamespace: System.Windows.Controls;assembly=System.Windows.Controls.Data"
Пример элемента управления DataGrid

Рис. 22.16. Пример элемента управления DataGrid

XAML код элемента DataGrid представленного на Рис. 22.16:

<UserControl x:Class="chapter6.PagedCollectionViewDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/
markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400"
xmlns:data="clr-namespace:System.Windows.Controls;
assembly=System.Windows.Controls.Data">
<Grid x:Name="LayoutRoot" Background="White"
Width="400" Height="300">
<data:DataGrid x:Name="myDataGrid" AutoGenerateColumns="False" >
<data:DataGrid.Columns>
<data:DataGridTextColumn Binding="{Binding Name}"
Header="Name" />
<data:DataGridTextColumn Binding="{Binding Email}"
Header="Email" />
<data:DataGridTextColumn Binding="{Binding City}"
Header="City" />
<data:DataGridTextColumn Binding="{Binding Pincode}"
Header="Pin Code" />
</data:DataGrid.Columns>
</data:DataGrid>
</Grid>
</UserControl>

Класс Employee:

public class Employee
{
public string Name { get; set; }
public string Email { get; set; }
public string City { get; set; }
public string State { get; set; }
public int Pincode { get; set; }
}

C# обработчик события PagedCollectionViewDemo_Loaded:

void PagedCollectionViewDemo_Loaded(object sender, RoutedEventArgs e)
{
Employee[] emps = new Employee[10];
emps[0] = new Employee();
emps[0].Name = "Ashish Ghoda";
emps[0].Email = "aghoda@TechnologyOpinion.com";
emps[0].City = "New Providence";
emps[0].Pincode = 07974;
emps[0].State = "New Jersey";
emps[1] = new Employee();
emps[1].Name = "Jay Nanavaty";
emps[1].Email = "jnanavaty@TechnologyOpinion.com";
emps[1].City = "Baroda";
emps[1].Pincode = 390023;
emps[1].State = "Gujarat";
emps[2] = new Employee();
emps[2].Name = "Kruti Vaishnav";
emps[2].Email = "kvaishnav@TechnologyOpinion.com";
emps[2].City = "Delhi";
emps[2].Pincode = 350025;
emps[2].State = "Delhi";
emps[3] = new Employee();
emps[3].Name = "Pratixa Ghoda";
emps[3].Email = "pghoda@TechnologyOpinion.com";
emps[3].City = "New Providence";
emps[3].Pincode = 07974;
emps[3].State = "New Jersey";
//PagedCollectionView
//Grouping
PagedCollectionView pgn = new PagedCollectionView(emps);
//Binding to the DataGrid
myDataGrid.ItemsSource = pgn;
}

Как видно из данного фрагмента кода список и он же источник данных создается вручную. В практическом занятии № 13 будет рассмотрено использование DataGrid с источником данных SQL Server 2008.