private void InitializeComboBox <T>(Gtk.ComboBox comboBox, IEnumerable <T> values, T activeValue, Func <T, string> toDisplayString) { var cellRenderer = new Gtk.CellRendererCombo(); comboBox.PackStart(cellRenderer, true); comboBox.SetCellDataFunc(cellRenderer, (l, e, m, i) => VisualHelpers.CellEnumRenderer <T>(l, e, m, i, toDisplayString)); var model = new Gtk.ListStore(typeof(T)); model.SynchronizeCollection(new ObservableCollection <T>(values)); comboBox.Model = model; comboBox.Active = comboBox.GetIndexOfValue(activeValue); }