Перейти к содержимому

Как сделать выпадающий список в wpf

  • автор:

Как сделать выпадающий список из цветов в WPF?

Нужен выпадающий список который будет отображать только цвет.

   " /> " />    
private void GetColorId() < ColorCollection.Add(new ColorsServices(0, Colors.Black)); ColorCollection.Add(new ColorsServices(1, Colors.Yellow)); ColorCollection.Add(new ColorsServices(2, Colors.Green)); ColorCollection.Add(new ColorsServices(3, Colors.Gray)); ColorCollection.Add(new ColorsServices(4, Colors.PaleGreen)); ColorCollection.Add(new ColorsServices(5, Colors.Violet)); ColorCollection.Add(new ColorsServices(6, Colors.CadetBlue)); >private ObservableCollection ColorCollection = new ObservableCollection(); 
public class ColorsServices < public ColorsServices(int id, Color name) < Name = name; >public int Id < get; set; >public Color Name < get; set; >> public ObservableCollection ColorList < get < return ColorCollection; >set < ColorCollection = value; >> 

введите сюда описание изображения

На данный момент результат вот такой: Как сделать что бы рядом со списком были отображены кружки с фоном данного цвета?

Поле со списком и список

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

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

Изображение раскрывающегося списка в компактном состоянии.

Выбор правильного элемента управления

  • Используйте раскрывающийся список, чтобы дать пользователям возможность выбрать одно значение из набора элементов, которые можно надлежащим образом представить с помощью отдельных строк текста.
  • Используйте представление списка или сетки вместо поля со списком для отображения элементов, состоящих из нескольких строк текста или изображений.
  • Если элементов меньше пяти, возможно, лучше воспользоваться переключателями (если можно выбрать только один элемент) или флажками (если можно выбрать несколько элементов).
  • Используйте поле со списком, если элементы выбора не имеют большого значения для работы приложения. Если для большинства пользователей в большей части ситуаций рекомендуется использовать вариант по умолчанию, отображение всех элементов в списке может привлечь излишнее внимание к вариантам. Поле со списком позволяет экономить пространство и не отвлекать пользователя.

Примеры

Поле со списком в компактном состоянии может отображать заголовок.

Снимок экрана: раскрывающийся список в компактном состоянии.

Хотя поля со списком разворачиваются для поддержки более длинных строк, избегайте слишком длинных строк, так как их сложно читать.

Пример раскрывающегося списка с длинной текстовой строкой

Если коллекция в поле со списком достаточно длинная, появляется полоса прокрутки. Логически группируйте элементы в списке.

Пример полосы прокрутки в раскрывающемся списке

Рекомендации

  • Ограничьте текстовое содержимое элементов полей со списком одной строкой.
  • Сортируйте элементы в поле со списком в логическом порядке. Группируйте связанные параметры и размещайте часто используемые параметры в начале списка. Названия сортируйте в алфавитном порядке, числа — по возрастанию, даты — по хронологии.

Окна со списками

Окно со списком позволяет пользователю выбрать один или несколько элементов коллекции. Окна со списками аналогичны раскрывающимся спискам за исключением того, что они всегда открыты — у окна со списком нет компактного (не развернутого) состояния. Элементы списка можно прокручивать, если для отображения списка полностью не хватает места.

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

  • Окно со списком может быть полезно, если элементы списка достаточно важны и экранного пространства достаточно для отображения всего списка.
  • При важном выборе список должен привлечь внимание пользователя к полному списку вариантов. И наоборот, раскрывающийся список изначально привлекает внимание пользователя к выбранному элементу.
  • Не используйте список в следующих случаях.
    • Список содержит очень малое число элементов. Список с возможностью выбора одного варианта, в котором содержится два пункта, лучше представить в виде переключателей. Также подумайте о возможности использования переключателей, если в списке 3 или 4 статических элемента.
    • Список выбран один раз, и в нем всегда есть те же 2 параметра, где один может быть подразумеваться как не другой, например «вкл» и «выкл». Используйте один проверка прямоугольник или переключатель.
    • Очень большое число элементов. Для длинных списков оптимальным решением является представление сетки и представление списка. Для очень длинных списков сгруппированных данных лучше использовать контекстное масштабирование.
    • Список представляет собой непрерывные числовые значения. В этом случае попробуйте использовать ползунок.
    • Элементы выбора не имеют большого значения для работы приложения, или же рекомендуется использовать вариант по умолчанию для большинства пользователей и ситуаций. Вместо списка используйте раскрывающийся список.

    Рекомендации по спискам

    • Идеальное количество элементов в окне со списком — от 3 до 9.
    • Также окно со списком хорошо подходит, если элементы списка могут динамически изменяться.
    • По возможности настройте размер окна со списком таким образом, чтобы список элементов не нужно было сдвигать или прокручивать.
    • Убедитесь, что цель окна со списком, а также выбранные в данный момент элементы понятны.
    • Предусмотрите визуальные эффекты и анимации для реакции на касание и состояние выбора элементов.
    • Ограничьте текстовое содержимое элементов списка одной строкой. Если элементы списка — это визуальные элементы, можно настроить их размер. Если элемент содержит несколько строк текста или изображений, используйте представление сетки или представление списка.
    • Используйте шрифт по умолчанию, если руководство по использованию корпоративного стиля не требует использования другого шрифта.
    • Не используйте окно с списком для выполнения команд или динамического скрытия либо отображения других элементов управления.

    UWP и WinUI 2

    Сведения и примеры в этой статье оптимизированы для приложений, использующих Windows App SDK и WinUI 3, но обычно применимы к приложениям UWP, использующим WinUI 2. Сведения и примеры для конкретной платформы см. в справочнике по API UWP.

    В этом разделе содержатся сведения, необходимые для использования элемента управления в приложении UWP или WinUI 2.

    API для этого элемента управления существуют в пространстве имен Windows.UI.Xaml.Controls .

    • API UWP:класс ComboBox, свойство IsEditable, свойство Text, событие TextSubmitted, класс ListBox
    • Откройте приложение коллекции WinUI 2 и просмотрите ComboBox в действии. Приложения из коллекции WinUI 2 включают интерактивные примеры большинства элементов управления, возможностей и функций WinUI 2. Получите приложение из Microsoft Store или получите исходный код в GitHub.

    Библиотека пользовательского интерфейса Windows 2.2 или более поздней версии содержит новый шаблон для этого элемента управления, использующий скругленные углы. Дополнительные сведения см. в разделе о радиусе угла.

    Создание поля со списком

    • Важные API: класс ComboBox, свойство IsEditable, свойство Text, событие TextSubmitted, класс ListBox

    Приложение «Коллекция WinUI 3» содержит интерактивные примеры большинства элементов управления, функций и функций WinUI 3. Получение приложения из Microsoft Store или исходный код на сайте GitHub

    Для заполнения полей со списком нужно напрямую добавить объекты в коллекцию элементов или привязать свойство ItemsSource к источнику данных. Добавляемые в ComboBox элементы помещаются в контейнеры ComboBoxItem.

    Здесь представлено простое поле со списком с добавленными элементами в формате XAML.

     Blue Green Red Yellow  

    В следующем примере демонстрируется привязка поля со списком к коллекции объектов FontFamily.

    " DisplayMemberPath="Source"/> 
    ObservableCollection fonts = new ObservableCollection() < fonts.Add(new FontFamily("Arial")); fonts.Add(new FontFamily("Courier New")); fonts.Add(new FontFamily("Times New Roman")); >; 

    Выбор элементов

    Подобно ListView и GridView, элемент ComboBox является производным от элемента выбора Selector, поэтому выбор пользователя можно получить стандартным образом.

    Вы можете получить или задать выбранный в поле со списком элемент с помощью свойства SelectedItem, а индекс выбранного элемента — с помощью свойства SelectedIndex.

    Чтобы получить значение конкретного свойства для выбранного элемента данных, можно использовать свойство SelectedValue. В этом случае задайте свойство SelectedValuePath для указания свойства выбранного элемента, из которого необходимо получить значение.

    В случае задания свойства SelectedItem или SelectedIndex для указания выбора по умолчанию возникает исключение, если свойство задано до заполнения коллекции элементов для поля со списком. Если вы не определяете элементы в коде XAML, лучше всего обработать событие Loaded поля со списком и задать параметр SelectedItem или SelectedIndex в обработчике событий Loaded.

    Вы можете осуществить привязку к этим свойствам в XAML или обрабатывать событие SelectionChanged для реагирования на изменения выбора.

    В коде обработчика событий выбранный элемент можно получить из свойства SelectionChangedEventArgs.AddedItems. Ранее выбранный элемент (при наличии) можно получить из свойства SelectionChangedEventArgs.RemovedItems. Каждая из коллекций AddedItems и RemovedItems содержит только один элемент, так как поле со списком не поддерживает выбор нескольких элементов.

    В этом примере показано, как обрабатывать событие SelectionChanged, а также как выполнить привязку к выбранному элементу.

      Blue Green Red Yellow  "/> "/> 
    private void ColorComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) < string colorName = e.AddedItems[0].ToString(); Color color; switch (colorName) < case "Yellow": color = Colors.Yellow; break; case "Green": color = Colors.Green; break; case "Blue": color = Colors.Blue; break; case "Red": color = Colors.Red; break; >colorRectangle.Fill = new SolidColorBrush(color); > 
    Событие SelectionChanged и навигация с помощью клавиатуры

    По умолчанию событие SelectionChanged возникает в том случае, когда пользователь щелкает элемент в списке, касается его или нажимает клавишу ВВОД, наведя на элемент указатель, чтобы зафиксировать свой выбор, и поле со списком закрывается. Выбор не изменяется в том случае, когда пользователь осуществляет навигацию по открытому полю со списком с помощью клавиш со стрелками на клавиатуре.

    Чтобы создать поле со списком, которое обновляется в режиме реального времени, пока пользователь использует клавиши со стрелками (например, раскрывающийся список выбора шрифтов), задайте для свойства SelectionChangedTrigger значение Always. В результате событие SelectionChanged возникает при переходе фокуса на другой элемент в открытом списке.

    Изменение алгоритма поведения выбранного элемента

    В Windows 10, версия 1809 (пакет SDK 17763) или более поздняя, алгоритм поведения выбранных элементов обновлен — теперь они поддерживают редактируемые поля со списком.

    В более ранних версиях пакета SDK, чем 17763, значение свойства SelectedItem (и, следовательно, свойств SelectedValue и SelectedIndex) должно было находиться в коллекции элементов поля со списком. В предыдущем примере установка colorComboBox.SelectedItem = «Pink» приводит к таким выходным данным:

    • SelectedItem = null.
    • SelectedValue = null.
    • SelectedIndex = -1.

    В пакете SDK версии 17763 и более поздних значение свойства SelectedItem (и, следовательно, свойств SelectedValue и SelectedIndex) не должно находиться в коллекции элементов поля со списком. В предыдущем примере установка colorComboBox.SelectedItem = «Pink» приводит к таким выходным данным:

    • SelectedItem =Pink.
    • SelectedValue = Pink.
    • SelectedIndex = -1.

    Поиск по тексту

    Поля со списком автоматически поддерживают поиск в их коллекциях. По мере того, как пользователь вводит символы на физической клавиатуре, выбрав открытое или закрытое поле со списком, отображаются варианты, подходящие под строку пользователя. Эта функция особенно полезна при навигации по длинному списку. Например, при взаимодействии с раскрывающимся списком, который содержит список штатов, пользователь может нажать клавишу W, чтобы представить «Washington» для быстрого выбора. Текстовый поиск не чувствителен к регистру.

    Чтобы отключить эту функцию, можно задать для свойства IsTextSearchEnabled значение false.

    Создание редактируемого поля со списком

    Для этой функции требуется Windows 10, версия 1809 (пакет SDK 17763) или более поздняя.

    По умолчанию поле со списком позволяет пользователю выбирать из предопределенного списка вариантов. Однако существуют случаи, когда список содержит только подмножество допустимых значений и пользователь должен иметь возможность ввести остальные значения, которые не включены в список. Для этого можно создать редактируемое поле со списком.

    Чтобы создать редактируемое поле со списком, задайте для свойства IsEditable значение true. Затем обработайте событие TextSubmitted для работы со значением, которое ввел пользователь.

    По умолчанию значение SelectedItem обновляется, когда пользователь фиксирует введенный текст. Это поведение можно переопределить, задав для свойства Handled значение true в аргументе события TextSubmitted. Если событие отмечено как обработанное, в поле со списком не будут предприниматься дополнительные действия после завершения события и поле будет оставаться редактируемым. Значение SelectedItem не будет обновляться.

    В приведенном ниже примере показано простое редактируемое поле со списком. Список содержит простые строки, и любое введенное пользователем значение будет использоваться в том виде, в котором оно было введено.

    Элемент выбора «недавно использованные имена» позволяет вводить пользовательские строки. Список RecentlyUsedNames содержит некоторые значения, из которых можно выбирать, но пользователь также может добавлять новые пользовательские значения. Свойство CurrentName представляет имя, введенное в настоящий момент.

    " SelectedItem=""/> 

    Событие TextSubmitted

    Вы можете обработать событие TextSubmitted для работы со значением, которое ввел пользователь. Как правило, в обработчике событий проверяется правильность введенного пользователем значения, после чего значение используется в приложении. В зависимости от ситуации, можно также добавить значение в поле списка вариантов для будущего использования.

    Событие TextSubmitted возникает при выполнении следующих условий:

    • Для свойства IsEditable установлено значение true.
    • Пользователь вводит текст, который не соответствует текущей записи в поле со списком.
    • Пользователь нажимает клавишу ВВОД или перемещает фокус с поля со списком.

    Событие TextSubmitted не происходит, если пользователь вводит текст, а затем осуществляет навигацию вверх или вниз по списку.

    Пример. Проверка входных данных и локальное использование

    В этом примере элемент выбора размера шрифта содержит набор значений, которые соответствуют таблице размеров шрифта, однако пользователь может также задать значения, которые не внесены в список.

    Когда пользователь добавляет значение, которое отсутствует в списке, размер шрифта обновляется, однако значение не заносится в этот список.

    Если только что введенное значение не является допустимым, необходимо использовать свойство SelectedValue, чтобы вернуть для свойства Text последнее допустимое значение.

    " TextSubmitted="FontSizeComboBox_TextSubmitted"/> 
    private void FontSizeComboBox_TextSubmitted(ComboBox sender, ComboBoxTextSubmittedEventArgs e) < if (byte.TryParse(e.Text, out double newValue)) < // Update the app's font size. _fontSize = newValue; >else < // If the item is invalid, reject it and revert the text. // Mark the event as handled so the framework doesn't update the selected item. sender.Text = sender.SelectedValue.ToString(); e.Handled = true; >> 

    Пример. Проверка входных данных и добавление значений в список

    В этом примере средство выбора избранного цвета содержит наиболее распространенные избранные цвета (красный, синий, зеленый, оранжевый). Однако пользователь также может ввести собственный избранный цвет, который не включен в список. Когда пользователь добавляет допустимый цвет (например, розовый), этот цвет добавляется в список и устанавливается как активный избранный цвет.

    " TextSubmitted="FavoriteColorComboBox_TextSubmitted"/> 
    private void FavoriteColorComboBox_TextSubmitted(ComboBox sender, ComboBoxTextSubmittedEventArgs e) < if (IsValid(e.Text)) < FavoriteColor newColor = new FavoriteColor() < ColorName = e.Text, Color = ColorFromStringConverter(e.Text) >ListOfColors.Add(newColor); > else < // If the item is invalid, reject it but do not revert the text. // Mark the event as handled so the framework doesn't update the selected item. e.Handled = true; >> bool IsValid(string Text) < // Validate that the string is: not empty; a color. >

    Получение примера кода

    • Пример коллекции WinUI — просмотр всех элементов управления XAML в интерактивном формате.

    Похожие статьи

    • Текстовые элементы управления
    • Руководство по проверке орфографии
    • Класс TextBox
    • Класс PasswordBox
    • Свойство String.Length

    ListBox и ComboBox

    Класс ListBox представляет распространенный компонент среды Windows — списки переменной длины, которые позволяют пользователю выбрать один из элементов.

    Класс ListBox допускает множественный выбор, если его свойству SelectionMode присвоить значение Multiple или Extended. В режиме Multiple можно выбрать любой элемент или отменить его выбор, щелкнув на нем. В режиме Extended необходимо прижать клавишу , чтобы выбрать дополнительные элементы, или клавишу , чтобы выбрать диапазон элементов. В любом виде списка с множественным выбором для получения всех выделенных элементов вместо свойства SelectedItem используется коллекция SelectedItems.

    Разные элементы управления обрабатывают вложенное в них содержимое по-разному. Объект ListBox хранит все вложенные объекты в своей коллекции Items.

    ListBox является довольно гибким элементом управления. Он может хранить не только объекты ListBoxItem, но и любые произвольные элементы. Ведь класс ListBoxItem является наследником класса ContentControl, который позволяет хранить фрагменты вложенного содержимого. Если такой фрагмент является классом, порожденным от UIElement, то он будет отображен в элементе ListBox. Если же это другой тип объекта, ListBox вызовет метод ToString() и выведет полученный текст. Например:

            

    ListBox

    Из примера видно, что объекты ListBox способны неявно создавать необходимые им объекты ListBoxItem. Это означает, что объекты можете помещать прямо внутрь элемента ListBox.

    Возможность заносить в списки произвольные элементы позволяет создавать различные основанные на списке элементы управления, не используя при этом другие классы. Например, в Windows Forms имеется специальный класс CheckedListBox, отображаемый как список с флажками около каждого элемента. В WPF для этого не нужен никакой специальный класс, поскольку его можно быстро создать с помощью стандартного объекта ListBox.

    При использовании списка, содержащего разные элементы, имейте в виду, что при считывании значения SelectedItem (а также коллекций SelectedItems и Items) вы не увидите объекты ListBoxItem — вместо них вы увидите те объекты, которые занесены в список. В примере с элементом CheckedListBox это означает, что SelectedItem предоставляет объект CheckBox.

    Если нужно найти выделенный в данный момент элемент, его можно прочитать непосредственно из свойства SelectedItem или SelectedItems. Если нужно определить, с какого элемента был снят выбор (если такое вообще было), можно воспользоваться свойством RemovedItems объекта SelectionChangedEventArgs.

    Аналогично, свойство AddedItems сообщает, какие элементы были добавлены в число выбранных. В режиме выбора одного элемента при изменении выбора всегда может быть добавлен лишь один элемент, и удален тоже только один элемент. В режиме множественного выбора или в расширенном режиме так бывает не всегда.

    В классе ListBoxItem имеется небольшая дополнительная возможность: в нем определено свойство IsSelected, значение которого можно считывать (или устанавливать), и события Selected и Unselected, которые сообщают о выделении данного элемента. Однако похожие возможности можно получить с помощью членов класса ListBox — свойства SelectedItem (или SelectedItems) и события SelectionChanged.

    Класс ComboBox

    Элемент ComboBox похож на элемент ListBox. Он хранит коллекцию объектов ComboBoxItem, которые создаются явным или неявным образом. Как и ListBoxItem, ComboBoxItem является элементом управления содержимым, который может хранить любой вложенный элемент.

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

    Если нужно сделать так, чтобы пользователь мог выбрать элемент в ComboBox, введя текст в текстовом поле, необходимо присвоить свойству IsEditable значение true. Кроме того, нужно сохранять только обычные текстовые объекты ComboBoxItem или объекты с осмысленным представлением ToString(). Например, если заполнить редактируемый раскрывающийся список объектами Image, то текст, который появится в верхней части, будет полностью определен именем класса Image, а это вряд ли то, что надо.

    Одним из ограничений элемента ComboBox является способ подгонки при автоматическом выборе размера. ComboBox выбирает такую ширину, чтобы вместить свое содержимое, т.е. изменяет размер при переходе от одного элемента к другому. К сожалению, нет легкого способа указать ComboBox принять размер наибольшего элемента. Вместо этого приходится указывать жестко закодированное значение свойства Width, что очень неудобно.

    Как сделать выпадающий список в wpf

    Класс ComboBox представляет выпадающий список. Например, определим элемент ComboBox в xaml:

       Tom Bob Sam Alice    

    Здесь в качестве элементов выпадающего списка используются строки. И после запуска программы мы сможем выбрать один из четырех элементов:

    ComboBox в WPF и C#

    В реальности в качестве элементов могут выступать любые объекты, например, элементы TextBlock :

     Tom Bob Sam Alice  

    Результат будет тот же самый, что и в предыдущем случае.

    Однако также в WPF предоставляет для ComboBoxe специальный тип — ComboBoxItem . ComboBoxItem представляет элемент управления содержимым, в который через свойство Content мы можем поместить другие элементы. Например:

         Tom Microsoft    Bob Google    Sam JetBrains      

    Элемент ComboBox и создание выпадающих списков в WPF и C#

    Стоит отметить, что в примеры выше для демонстрации применяется повторяющаяся разметка. В реальном же приложении для создании подобных разметок, применяются шаблон данных и механизм привязки, которые рассматриваются в последующих главах.

    Как и другие элементы управления списками, ComboBox можно отображать объекты пользовательсих классов. Например, определим пустой ComboBox :

    В файле связанного кода C# определим класс Person, который представляет данные, и добавим в список несколько объектов этого класса:

    using System.Windows; namespace MetanitApp; public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); peopleComboBox.ItemsSource = new Person[] < new Person < Name = "Tom", Company = "Microsoft" >, new Person < Name = "Bob", Company = "Google" >, new Person < Name = "Sam", Company = "JetBrains" >>; > > public class Person < public string Name < get; set; >= ""; public string Company < get; set; >= ""; public override string ToString() => $" ()"; >

    Отображение сложных объектов в ComboBox в WPF и C#

    По умолчанию ComboBox выводит строковое представление объекта. Если необходимо отображать значение определенного свойства, применяется свойство DisplayMemberPath , например, выведем значение свойства Name:

    Событие SelectionChanged и обработка выбора объекта

    Обрабатывая событие SelectionChanged , мы можем динамически получать выделенный элемент. Для управления выбранными объектами класс ComboBox предоставляет следующие свойства:

    • SelectedItem : выбранный объект списка
    • SelectedValue : выбранное значение
    • SelectedIndex : индекс выбранного объекта в списке

    Определим в xaml следующий интерфейс:

    Здесь для события SelectionChanged установлен обработчик «peopleComboBox_SelectionChanged», а для вывода выбранного объекта определен элемент TextBlock.

    В коде C# определим обработчик события:

    using System.Windows; using System.Windows.Controls; namespace MetanitApp; public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); peopleComboBox.ItemsSource = new Person[] < new Person < Name = "Tom", Company = "Microsoft" >, new Person < Name = "Bob", Company = "Google" >, new Person < Name = "Sam", Company = "JetBrains" >>; peopleComboBox.SelectedIndex = 1; // по умолчанию будет выбран второй элемент > private void peopleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) < if(peopleComboBox.SelectedItem is Person person) < selectedLabel.Text = person.Name; >> > public class Person < public string Name < get; set; >= ""; public string Company < get; set; >= ""; public override string ToString() => $" ()"; >

    Поскольку здесь элементами списка являются объекты Person, то выбранный объект мы можем привести к типу Person

    if(peopleComboBox.SelectedItem is Person person)

    И вывести в текстовую метку значение свойства Name:

    Обработка выбора элемента и событие SelectionChanged в WPF и C#

    Также мы могли бы использовать свойство SelectedValue , которое представляет выбранное значение. Для его использования определим следующий код xaml:

    Обратите внимание на свойство SelectedValuePath=»Name» — здесь мы указываем, что свойство «Name» будет выступать в качестве свойства значения.

    Для обработки события выбора элемента определим следующий код C#:

    using System.Windows; using System.Windows.Controls; namespace MetanitApp; public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); peopleComboBox.ItemsSource = new Person[] < new Person < Name = "Tom", Company = "Microsoft" >, new Person < Name = "Bob", Company = "Google" >, new Person < Name = "Sam", Company = "JetBrains" >>; peopleComboBox.SelectedIndex = 1; // по умолчанию будет выбран второй элемент > private void peopleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) < if(peopleComboBox.SelectedValue is < >) // если не равно null < selectedPerson.Text = peopleComboBox.SelectedValue.ToString(); >// или так // selectedPerson.Text = peopleComboBox.SelectedValue?.ToString(); > > public class Person < public string Name < get; set; >= ""; public string Company < get; set; >= ""; public override string ToString() => $" ()"; >

    Здесь проверяем, не равно ли peopleComboBox.SelectedValue null (хотя в примере выше это не имеет смысла, поскольку это свойство представляет строку), и выводим значение этого свойства в текстовый блок. Результат будет аналогичен предыдущему.

    Свойства

    Установка свойства IsEditable=»True» позволяет вводить в поле списка начальные символы, а затем функция автозаполнения подставит подходящий результат. По умолчанию свойство имеет значение False .

    Это свойство работает в комбинации со свойством IsReadOnly : оно указывает, является поле ввода доступным только для чтения. По умолчанию имеет значение False , поэтому если IsEditable=»True» , то мы можем вводить туда произвольный текст.

    Еще одно свойство StaysOpenOnEdit при установке в True позволяет сделать список раскрытым на время ввода значений в поле ввода.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *