Search code examples
c#wpfcombobox

Add comboBox items from code behind. [WPF]


I grabbed this code from MSDN. What Im trying to do is similar, but use a list instead of three different strings. so say

List<string> strList = new List<string>();
strList.Add("Created with C#");
strList.Add("Item 2");
strList.Add("Item 3");

  //MSDN CODE BELOW
    cbox = new ComboBox();
        cbox.Background = Brushes.LightBlue;
        cboxitem = new ComboBoxItem();
        cboxitem.Content = "Created with C#";
        cbox.Items.Add(cboxitem);
        cboxitem2 = new ComboBoxItem();
        cboxitem2.Content = "Item 2";
        cbox.Items.Add(cboxitem2);
        cboxitem3 = new ComboBoxItem();
        cboxitem3.Content = "Item 3";
        cbox.Items.Add(cboxitem3);

        cv2.Children.Add(cbox);

Tried to do cbox.Items.Add(strList); Also tried a forloop to loop through each element, but that doesn't work either. Any ideas how I can achieve this?

enter image description here

XAML:

          <Grid x:Name="grid44" DataContext="{StaticResource tBLPERMITSViewSource}" HorizontalAlignment="Left" VerticalAlignment="Top" Width="409">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto"/>
                                <ColumnDefinition Width="Auto"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <Label Content="SPR PACKET ASSIGMENT" Grid.Column="0" HorizontalAlignment="Left" Margin="3" Grid.Row="0" VerticalAlignment="Center" FontWeight="Bold"/>
                            <ComboBox x:Name="sPR_ASSIGNEDComboBox" Grid.Column="1" DisplayMemberPath="SPR_ASSIGNED" HorizontalAlignment="Left" Height="Auto" Text="{Binding SPR_ASSIGNED}" ItemsSource="{Binding Items}" Margin="3,5,-114.35,5" Grid.Row="0" VerticalAlignment="Center" Width="238.35" Background="White" IsReadOnly="True" IsEditable="True" >

                            </ComboBox>
                        </Grid>

Solution

  • Set the items programmatically:

    Code-behind:

        private void PopulateComboBox()
        {
            cBox.ItemsSource = new List<string> { "Item1", "Item2", "Item3"};
        }
    

    XAML:

    <ComboBox Width="200" Height="30"  x:Name="cBox" />
    

    Bind to a collection of items:

        public class DummyClass
        {
            public int Value { get; set; }
            public string DisplayValue { get; set;}
        }
    
        public ObservableCollection<DummyClass> DummyClassCollection
        {
            get
            {
                return new ObservableCollection<DummyClass>
                {
                    new DummyClass{DisplayValue = "Item1", Value = 1},
                    new DummyClass{DisplayValue = "Item2", Value = 2},
                    new DummyClass{DisplayValue = "Item3", Value = 3},
                    new DummyClass{DisplayValue = "Item4", Value = 4},
                };
            }
        }
    

    XAML:

    <ComboBox Width="200" Height="30"  x:Name="cBox" ItemsSource="{Binding DummyClassCollection}" DisplayMemberPath="DisplayValue" />