Вы должны рассмотреть возможность использования привязок, а не обработчиков событий. Это приводит к намного более чистому коду и большему разделению проблем между представлением и процессом:
Объявите свой комбо следующим образом:
<ComboBox x:Name="cboCountries" DisplayMemberPath="Name" SelectedItem="{Binding SelectedCountry}" ItemsSource="{Binding Countries}" />
Затем вы связываете свой ComboBox с коллекцией в вашем Window (или, предпочтительно, с ViewModel):
public Window1()
{
InitializeComponent();
DataContext = this;
this.Countries = new ObservableCollection<Country>();
this.Countries.Add(new Country {Id = 1, Name = "United Kingdom" });
this.Countries.Add(new Country {Id = 1, Name = "United States" });
}
public ObservableCollection<Country> Countries {get; set;}
private Country selectedCountry;
public Country SelectedCountry
{
get { return this.selectedCountry; }
set
{
System.Diagnostics.Debug.WriteLine(string.Format("Selection Changed {0}", value.Name));
this.selectedCountry = value;
}
}
Привязка выражения для свойства SelectedValue в комбинированном списке приведет к срабатыванию установщика свойства в SelectedCountry при каждом изменении выбранного элемента в комбинированном списке.
public class Country
{
public int Id { get; set;}
public string Name {get; set;}
}