static void SetupCombo(ComboBox cboServers, ObservableCollection <ServerDBName> data, object dataContext) { cboServers.Items.Clear(); cboServers.DataContext = data; if (!data.Any()) { cboServers.Visibility = Visibility.Hidden; return; // empty list } cboServers.DisplayMemberPath = "Caption"; cboServers.ItemsSource = cboServers.DataContext as IEnumerable <object>; // http://www.dotnetperls.com/combobox-wpf cboServers.SelectionChanged += (s, e) => { var selected = cboServers.SelectedItem as ServerDBName; ServerList.ComboSelect(selected, dataContext); }; var first = Enumerable.First(cboServers.DataContext as ObservableCollection <ServerDBName>); cboServers.Text = first.Caption; if (!string.IsNullOrWhiteSpace(first.DbName)) { Guard.Check(dataContext.GetValue <string>("dbName").Equals(first.DbName), "SelectionChanged error"); } }