Поиск WPF ComboBox с флажками
Мои навыки Google не позволяют мне. Любой слышал о подобном элементе для WPF. Я пытаюсь сделать это так (winforms screenshot).
alt text http://sofru.miximages.com/wpf/up.png
- Пользовательский контроль WPF Parent
- Как отобразить другое значение для выпадающего списка значений / выбранного элемента в WPF ComboBox?
- Текстовая анимация WPF Marquee
- Почему я не могу ссылаться на System.ComponentModel.DataAnnotations?
- как можно включить полосы прокрутки в WPF Datagrid?
- Открыть окно WPF в WindowsForm APP
- Как сохранить состояние управления в элементах табуляции в TabControl
- Как отформатировать TimeSpan в XAML
- Как настроить привязку ширины столбца ColumnDefinition или RowDefinition?
- RichTextBox (WPF) не имеет строкового свойства «Текст»
- Измените элементы управления WPF из не основного streamа с помощью Dispatcher.Invoke
- Перетаскивание на рабочий стол / проводник
- Есть ли способ определить, где объявляется / создается привязка WPF?
Вы можете сделать это самостоятельно, установив DataTemplate в поле со списком. В этой статье показано, как – для списка, но принцип тот же.
Другая статья здесь , пожалуй, лучше подходит для того, что вы пытаетесь сделать, просто установите первый столбец шаблона элемента как флажок и привяжите его к bool в бизнес-объекте.
Есть мой combobox. Я использую код и код Мартина Харриса из этой ссылки. Может ли WPF ComboBox отображать альтернативный текст, когда его выбор равен нулю?
Малый class для источника данных:
public class SelectableObject { public bool IsSelected { get; set; } public T ObjectData { get; set; } public SelectableObject(T objectData) { ObjectData = objectData; } public SelectableObject(T objectData, bool isSelected) { IsSelected = isSelected; ObjectData = objectData; } }
И есть два обработчика – один для обращения к CheckBox и один для формирования Text для ComboBox.
private void OnCbObjectCheckBoxChecked(object sender, RoutedEventArgs e) { StringBuilder sb = new StringBuilder(); foreach (SelectableObject cbObject in cbObjects.Items) if (cbObject.IsSelected) sb.AppendFormat("{0}, ", cbObject.ObjectData.Description); tbObjects.Text = sb.ToString().Trim().TrimEnd(','); } private void OnCbObjectsSelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBox comboBox = (ComboBox)sender; comboBox.SelectedItem = null; }
Для ComboBox.ItemsSource я использую
ObservableCollection>
где tblObject – это тип моего объекта, список которого я хочу отображать в ComboBox.
Надеюсь, этот код полезен кому-то!
Попробуйте CheckComboBox из Extended WPF Toolkit . Главное преимущество для меня – наличие двух списков для привязки:
- все элементы, доступные для выбора
- только выбранные предметы
Я нахожу этот подход более практичным. Кроме того, вы можете указать value
и display
элементы коллекций, которые вы связываете.
Если вы не хотите приносить кучу других элементов управления с помощью CheckComboBox
, вы можете получить исходный код , это довольно просто (нужно также выбрать class Selector ).