Arne Garvander's web site

Seven ways to program a ComboBox in WPF

Four ways to fill a ComboBox:

  1. <ComboBox>
    <ComboBoxItem Content="Owner" Tag="0" />
    </ComboBox>
  2. Code Behind:
    List<EmployeeType>list = new List<EmployeeType>();
    list.Add(new EmployeeType(0, "Owner"));
    list.Add(new EmployeeType(1, "Hired"));
    list.Add(new EmployeeType(2, "Fired"));
    cboEmployeeType.ItemsSource = list;
  3. Static Resource:
    <Window.Resources>
    <local:EmployeeTypes x:Key="employeeTypes" />
    </Window.Resources>
    <ComboBox ItemsSource="{Binding Source={StaticResource employeeTypes}}"/>
    The EmployeeType is a class:
        public class EmployeeTypes : List<EmployeeType> 
        { 
            public EmployeeTypes() 
            { 
                // It is not a good idea to make a database connection in a constructor
                Add(new EmployeeType(0, "Owner")); 
                Add(new EmployeeType(1, "Hired")); 
                Add(new EmployeeType(2, "Fired")); 
            }  
        }

    Static resource is a superior method because it works real well in a datagrid.

  4. ObjectDataProvider works great
    <Window.Resources>
    <ObjectDataProvider x:Key="employeeTypes"
    MethodName="GetEmployeeTypes" ObjectType="{x:Type local:EmployeeObjectTypes}"/> </Window.Resources>
        public class EmployeeObjectTypes  
        {
            public List<EmployeeType>  GetEmployeeTypes()
            {
                List<EmployeeType> list = new List<EmployeeType>();
                list.Add(new EmployeeType(0, "Owner"));
                list.Add(new EmployeeType(1, "Hired"));
                list.Add(new EmployeeType(2, "Fired"));
                return list;
            }
        }

Data Binding:

<ComboBox ItemsSource="{Binding Source={StaticResource employeeTypes}}"                  
             SelectedValue="{Binding EmployeeTypeId}"           
             SelectedValuePath="EmployeeTypeId"                 
             DisplayMemberPath="EmployeeTypeDescription">
</ComboBox>

The downloadable source code below have 6 ways to resolve a foreign key with the help a combobox

  • The second example is Silverlight 3 style programming used in WPF
  • The datagrid is new for WPF 4, but can be added to WPF 3.5 by downloading the datagrid from codeplex Datagrid download
Source code with Visual Studio 2010 project file
Source code with Visual Studio 2008 project file
Power Point presentation

© Copyright 2009 Arne Garvander Home | Contact Valid XHTML 1.0 Transitional | Valid CSS!