Buscando un WPF ComboBox con casillas de verificación

Mis habilidades de Google me fallan. Alguien ha oído hablar de un control como ese para WPF. Estoy tratando de que se vea así (captura de pantalla de winforms).

texto alternativo http://sofes.miximages.com/checkedlistbox/up.png

Puede hacerlo usted mismo configurando DataTemplate del cuadro combinado. Este artículo muestra cómo, para un cuadro de lista, pero el principio es el mismo.


Otro artículo aquí es quizás una mejor opción para lo que estás tratando de hacer, simplemente establece la primera columna de la plantilla del artículo para que sea una checkbox y vincúlala a un bool en tu objeto comercial.

        

Hay mi combobox. Uso el código y el código de Martin Harris desde este enlace. ¿Puede un WPF ComboBox mostrar texto alternativo cuando su selección es nula?

            

Clase pequeña para el origen de datos:

 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; } } 

Y hay dos controladores: uno para hacer clic en CheckBox y otro para formar Text for 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; } 

Para ComboBox.ItemsSource que uso

 ObservableCollection> 

donde tblObject es el tipo de mi objeto, una lista de la cual quiero mostrar en ComboBox.

¡Espero que este código sea útil para alguien!

Pruebe con CheckComboBox desde Extended WPF Toolkit . La principal ventaja para mí es tener dos listas para el enlace:

  • todos los artículos disponibles para la selección
  • solo elementos seleccionados

Encuentro este enfoque más práctico. Además, puede especificar el value y display miembros de las colecciones que está vinculando.

Si no quiere traer CheckComboBox otros controles con CheckComboBox , puede obtener el código fuente del mismo, es bastante sencillo (necesita traer la clase Selector también).