Search code examples
.netwpfcomboboxcompositecollection

How to add option "All" to a combobox in WPF with binding from Database


I have the following ComboBox in WPF. I know that I can add option ALL with CompositeCollection, but I don't know how. It would be great if somebody help me out with a short tutorial.

<ComboBox SelectionChanged="ComboBoxOperatingPoints_SelectionChanged" 
          x:Name="ComboBoxOperatingPoints" 
          DropDownOpened="ComboBoxOperatingPoints_DropDownOpened_1"
          FontSize="30" 
          HorizontalAlignment="Right" 
          Margin="40,40,0,0" 
          VerticalAlignment="Top" 
          Width="200" 
          Height="50"
          IsSynchronizedWithCurrentItem="True"
          ItemsSource="{Binding OperatingPoints}"
          DisplayMemberPath="name"
          SelectedValue="{Binding OperatingPointID,UpdateSourceTrigger=PropertyChanged,TargetNullValue=''}"
          SelectedValuePath="operating_point_id">
</ComboBox>

Solution

  • Try this (msdn):

    <ComboBox x:Name="ComboBoxOperatingPoints"  
              SelectionChanged="ComboBoxOperatingPoints_SelectionChanged" 
              Width="200" Height="50"
              IsSynchronizedWithCurrentItem="True"
              DisplayMemberPath="name"        
              SelectedValuePath="operating_point_id">
        <ComboBox.Resources>
            <CollectionViewSource x:Key="comboBoxSource" Source="{Binding Path=OperatingPoints}" />
        </ComboBox.Resources>
        <ComboBox.ItemsSource>
            <CompositeCollection>
                <local:OpPoint name="all" operating_point_id="-1" />
                <CollectionContainer Collection="{Binding Source={StaticResource comboBoxSource}}" />
            </CompositeCollection>
        </ComboBox.ItemsSource>
    </ComboBox>