+4  A: 

You can do this yourself by setting the DataTemplate of the combo box. This article shows you how - for a listbox, but the principle is the same.


Another article here is perhaps a better fit for what you are trying to do, simple set the first column of the item template to be a checkbox and bind it to a bool on your business object.

<ComboBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <CheckBox Checked="{Binding IsSelected}"
                       Width="20" />
            <TextBlock Text="{Binding DayOfWeek}"
                       Width="100" />
        </StackPanel>
    </DataTemplate>
</ComboBox.ItemTemplate>
Martin Harris
What if you want to create a re-usable control and you don't want to add IsSelected to your business objects?
Kevin Berridge
You could create a new custom control that inherits from Combobox and alter the control's template to replace the control that sits in the popup with a list including the checkboxes. Listen to the checkboxes Checked event in the control and maintain a list of checked items which you can expose through a property.
Martin Harris
It should be <CheckBox IsChecked="{Binding IsSelected}" Width="20" />, shouldn't it?
Philippe
+1  A: 
Yacoder
I ended up implementing it in a very similar manner.
AngryHacker