ListBox представляет собой обычный список. Содержит коллекцию элементов ListBoxItem. Также ListBox может содержать любые другие элементы, например, текстовые блоки, кнопки, тогда в этом случае они неявно обертываются в элемент ListBoxItem:
<ListBox x:Name="listbox1" FontSize="26"> <TextBlock FontWeight="Bold" Text="Планшеты" /> <ListBoxItem Background="LightGray">LG G Pad 8.0</ListBoxItem> <ListBoxItem>Samsung Galaxy Tab 4</ListBoxItem> <ListBoxItem Background="LightGray">Samsung Galaxy Tab S</ListBoxItem> <ListBoxItem>Lenovo Yoga Tablet 8</ListBoxItem> <ListBoxItem Background="LightGray">Apple iPod Air 2</ListBoxItem> <ListBoxItem>Sony Xperia Z3 Tablet Compact</ListBoxItem> </ListBox>
Все эти элементы будут находиться в коллекции Items
и, таким образом, по счетчику можно к ним обращаться, например,
listbox1.Items[0]
- первый элемент ListBox, который в данном случае представляет TextBlock. Также мы можем установить элемент:
listbox1.Items[2]="Германия";
Так как ListBoxItem является элементом управления содержимым, то мы можем задавать в качестве элемента списка и более сложные композиции элементов, например:
<ListBox Name="Photos" FontSize="22"> <ListBoxItem> <StackPanel Orientation="Horizontal"> <Image Source="cat.jpg" Width="60" /> <TextBlock Margin="10">Кот</TextBlock> </StackPanel> </ListBoxItem> <StackPanel Orientation="Horizontal"> <Image Source="dubi.jpg" Width="60" /> <TextBlock Margin="10">Зима</TextBlock> </StackPanel> <StackPanel Orientation="Horizontal"> <Image Source="flowers.jpg" Width="60" /> <TextBlock Margin="10">Цветы</TextBlock> </StackPanel> </ListBox>
ListBox поддерживает множественный выбор. Для этого нужно установить свойство SelectionMode="Multiple"
или SelectionMode="Extended"
.
В последнем случае, чтобы выделить несколько элементов, необходимо держать нажатой клавишу Ctrl или Shift. По умолчанию SelectionMode="Single"
, то есть допускается только единственное выделение.
Чтобы обработать выбор элемента в ListBoxе, мы можем добавить обработчик к событию SelectionChanged
:
<StackPanel> <ListBox x:Name="listbox1" FontSize="22" SelectionMode="Single" SelectionChanged="listbox1_SelectionChanged"> <ListBoxItem>LG G Pad 8.0</ListBoxItem> <ListBoxItem>Samsung Galaxy Tab 4</ListBoxItem> <ListBoxItem>Apple iPod Air 2</ListBoxItem> </ListBox> <TextBlock x:Name="textBlock1" FontSize="26" /> </StackPanel>
В коде C# мы можем использовать свойство SelectedItem, чтобы получить выбранный элемент:
private void listbox1_SelectionChanged(object sender, SelectionChangedEventArgs e) { textBlock1.Text = ((ListBoxItem)listbox1.SelectedItem).Content.ToString(); }