C# WPF Combobox select first item

75,939

Solution 1

Update your XAML with this:

<ComboBox 
        Name="cbGastid" 
        ItemsSource="{Binding}" 
        DisplayMemberPath="Description" 
        SelectedItem="{Binding Path=id}"
        IsSynchronizedWithCurrentItem="True"
        SelectedIndex="0" />  // Add me!

Solution 2

Try this, instead of SelectedIndex

cbGastid.SelectedItem = sitesTable.DefaultView.[0][0]; // Assuming you have items here.

or set it in Xaml

<ComboBox 
        Name="cbGastid" 
        ItemsSource="{Binding}" 
        DisplayMemberPath="Description" 
        SelectedItem="{Binding Path=id}"
        IsSynchronizedWithCurrentItem="True"
        SelectedIndex="0" />

Solution 3

It works for me if I add a SelectedIndex Property in my VM with the proper binding in the xaml. This is in addition to the ItemSource and the SelectedItem. This way SelectedIndex defaults to 0 and I got what I wanted.

    public List<string> ItemSource { get; } = new List<string> { "Item1", "Item2", "Item3" };
    public int TheSelectedIndex { get; set; }

    string _theSelectedItem = null;
    public string TheSelectedItem
    {
        get { return this._theSelectedItem; }
        set
        {
            this._theSelectedItem = value;
            this.RaisePropertyChangedEvent("TheSelectedItem"); 
        } 
    }

And the proper binding in the xaml;

    <ComboBox MaxHeight="25"  Margin="5,5,5,0" 
      ItemsSource="{Binding ItemSource}" 
      SelectedItem="{Binding TheSelectedItem, Mode=TwoWay}"
      SelectedIndex="{Binding TheSelectedIndex}" />

Solution 4

Update your XAML with this code :

<ComboBox 
   Name="cbGastid" 
   ItemsSource="{Binding}" 
   DisplayMemberPath="Description" 
   SelectedItem="{Binding Path=id, UpdateSourceTrigger=PropertyChanged, Mode=OneWayToSource}"
   IsSynchronizedWithCurrentItem="True" />

Hope it works :)

Solution 5

Try this,

remove from de C# code the following line:

cbGastid.ItemsSource = sitesTable.DefaultView; 

and add this:

cbGastid.DataContext = sitesTable.DefaultView
Share:
75,939
Roboneter
Author by

Roboneter

Updated on December 21, 2021

Comments

  • Roboneter
    Roboneter over 2 years

    Goodday,

    I want my combobox to select the first item in it. I am using C# and WPF. I read the data from a DataSet. To fill the combobox:

    DataTable sitesTable = clGast.SelectAll().Tables[0];
    cbGastid.ItemsSource = sitesTable.DefaultView;
    

    Combo box XAML code:

    <ComboBox 
       Name="cbGastid" 
       ItemsSource="{Binding}" 
       DisplayMemberPath="Description" 
       SelectedItem="{Binding Path=id}"
       IsSynchronizedWithCurrentItem="True" />
    

    If I try:

    cbGastid.SelectedIndex = 0; 
    

    It doesn't work.