ComboBox представляет раскрывающийся список. Он применяется, чтобы предоставить пользователю возможность выбрать одно из значений в списке. ComboBox больше подходит для выбора элементов, которые представляют обычные строки. Хотя более сложные данные также можно добавлять в ComboBox.
Если элементов в списке меньше пяти, то оптимальнее использовать для выбора набор элементов RadioButton или CheckBox.
Например, определим простейший элемент ComboBox:
<Page x:Class="DataApp.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:DataApp" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <ComboBox Name="phonesList" Header="Смартфоны" PlaceholderText="Выберите смартфон"> <x:String>iPhone 7</x:String> <x:String>Samsung Galaxy S8</x:String> <x:String>Huawei P10</x:String> <x:String>LG G6</x:String> <x:String>HP Elite z3</x:String> </ComboBox> <TextBlock Text="{Binding ElementName=phonesList, Path=SelectedItem}" /> </StackPanel> </Page>
В ComboBox можно добавлять различные компоненты, например, текстовые блоки, но кроме того специально для ComboBox определен класс ComboBoxItem, который представляет отдельный элемент списка. ComboBoxItem представляет элемент управления содержимым, в который через свойство Content мы можем поместить другие элементы. Например:
<ComboBox Width="200"> <ComboBoxItem IsSelected="True"> <StackPanel Orientation="Horizontal"> <Image Source="assets/oduvanchiki.jpg" Width="60" /> <TextBlock>Одуванчики</TextBlock> </StackPanel> </ComboBoxItem> <StackPanel Orientation="Horizontal"> <Image Source="assets/kamni.jpg" Width="60" /> <TextBlock>Камни</TextBlock> </StackPanel> <StackPanel Orientation="Horizontal"> <Image Source="assets/siren.jpg" Width="60" /> <TextBlock>Сирень</TextBlock> </StackPanel> </ComboBox>
Для создания первого элемента использовался элемент ComboBoxItem. Для второго и третьего такие элементы создаются неявно. Однако использование
ComboBoxItem
имеет преимущество, так как мы можем выделить данный элемент, установив свойство IsSelected="True"
, либо можем сделать
недоступным с помощью установки свойства IsEnabled="True"
.
Но хотя мы можем выводить в ComboBox сложные объекты с изображениями и различными свойствами, но для этого все же лучше использовать более специализированные элементы типа ListView или GridView.
Во всем остальном, что касается обработки выбора элемента, привязки к сложным коллекциям, использования DataTemplate ComboBox работает также, как и другие элементы-списки, например, ListBox.