<Grid
Width="130"
VerticalAlignment="Center">
<Grid.Resources>
<CollectionViewSource x:Key="Columns" Source="{Binding MySource}" />
<DataTemplate DataType="{x:Type models:MyLabel}">
<CheckBox
Checked="CheckBox_CheckChanged"
Content="{Binding Label}"
IsChecked="{Binding IsSelected}"
Unchecked="CheckBox_CheckChanged" />
</DataTemplate>
</Grid.Resources>
<ComboBox
IsEditable="False"
IsReadOnly="True"
SelectedIndex="-1">
<ComboBox.ItemsSource>
<CompositeCollection>
<CheckBox
x:Name="SelectAllCb"
Checked="SelectAllCb_CheckedChanged"
Content="Select All"
Unchecked="SelectAllCb_CheckedChanged" />
<CollectionContainer Collection="{Binding Source={StaticResource Columns}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
<TextBlock
Margin="5,0,0,0"
VerticalAlignment="Center"
IsHitTestVisible="False"
Text="Show/Hide Columns" />
</Grid>
<Grid
Width="130"
VerticalAlignment="Center">
<Grid.Resources>
<CollectionViewSource x:Key="Columns" Source="{Binding MySource}" />
<DataTemplate DataType="{x:Type models:MyLabel}">
<CheckBox
Checked="CheckBox_CheckChanged"
Content="{Binding Label}"
IsChecked="{Binding IsSelected}"
Unchecked="CheckBox_CheckChanged" />
</DataTemplate>
</Grid.Resources>
<ComboBox
IsEditable="False"
IsReadOnly="True"
SelectedIndex="-1">
<ComboBox.ItemsSource>
<CompositeCollection>
<CheckBox
x:Name="SelectAllCb"
Checked="SelectAllCb_CheckedChanged"
Content="Select All"
Unchecked="SelectAllCb_CheckedChanged" />
<CollectionContainer Collection="{Binding Source={StaticResource Columns}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
<TextBlock
Margin="5,0,0,0"
VerticalAlignment="Center"
IsHitTestVisible="False"
Text="Show/Hide Columns" />
</Grid>