public ListViewCombos()
        {
            ListView list       = new ListView();
            var      indexField = new DataField <int> ();

            var indexField2 = new DataField <int> ();
            var itemsField  = new DataField <ItemCollection> ();

            ListStore store = new ListStore(indexField, indexField2, itemsField);

            list.DataSource       = store;
            list.GridLinesVisible = GridLines.Horizontal;

            var comboCellView = new ComboBoxCellView {
                Editable = true, SelectedIndexField = indexField
            };

            comboCellView.Items.Add(1, "one");
            comboCellView.Items.Add(2, "two");
            comboCellView.Items.Add(3, "three");

            list.Columns.Add(new ListViewColumn("List 1", comboCellView));

            var comboCellView2 = new ComboBoxCellView {
                Editable = true, SelectedIndexField = indexField2, ItemsField = itemsField
            };

            list.Columns.Add(new ListViewColumn("List 2", comboCellView2));

            int p = 0;

            for (int n = 0; n < 10; n++)
            {
                var r = store.AddRow();
                store.SetValue(r, indexField, n % 3);
                var col = new ItemCollection();
                for (int i = 0; i < 3; i++)
                {
                    col.Add(p, "p" + p);
                    p++;
                }
                store.SetValues(r, indexField2, n % 3, itemsField, col);
            }
            PackStart(list, true);
        }
        public override void Initialize(OptionsDialog dialog, object dataObject)
        {
            base.Initialize(dialog, dataObject);

            config = (SolutionRunConfigInfo)dataObject;

            store    = new ListStore(selectedField, projectNameField, projectField, runConfigField, projectRunConfigsField);
            listView = new ListView(store);

            var col1 = new ListViewColumn(GettextCatalog.GetString("Solution Item"));
            var cb   = new CheckBoxCellView(selectedField);

            cb.Toggled += SelectionChanged;
            cb.Editable = true;
            col1.Views.Add(cb);
            col1.Views.Add(new TextCellView(projectNameField));
            listView.Columns.Add(col1);

            var configSelView = new ComboBoxCellView(runConfigField);

            configSelView.Editable   = true;
            configSelView.ItemsField = projectRunConfigsField;
            var col2 = new ListViewColumn(GettextCatalog.GetString("Run Configuration"), configSelView);

            listView.Columns.Add(col2);

            foreach (var it in config.Solution.GetAllSolutionItems().Where(si => si.SupportsExecute()).OrderBy(si => si.Name))
            {
                var row     = store.AddRow();
                var si      = config.EditedConfig.Items.FirstOrDefault(i => i.SolutionItem == it);
                var sc      = si?.RunConfiguration?.Name ?? it.GetDefaultRunConfiguration()?.Name;
                var configs = new ItemCollection();
                foreach (var pc in it.GetRunConfigurations())
                {
                    configs.Add(pc.Name);
                }
                store.SetValues(row, selectedField, si != null, projectNameField, it.Name, projectField, it, runConfigField, sc, projectRunConfigsField, configs);
            }
        }
        void CreateView()
        {
            store = new TreeStore(itemField, descriptionField, propertyNameField, propertiesField, notificationPreferenceField, notificationPreferencesField);

            treeView = new TreeView(store);
            treeView.SelectionChanged += (object sender, EventArgs e) => {
                if (treeView.SelectedRow != null)
                {
                    var item = store.GetNavigatorAt(treeView.SelectedRow)?.GetValue(itemField) as AbstractCodeStyleOptionViewModel;
                    if (item != null)
                    {
                        this.viewModel.SetOptionAndUpdatePreview(item.SelectedPreference.IsChecked, item.Option, item.GetPreview());
                        return;
                    }
                }
                return;
            };
            var col = treeView.Columns.Add(GettextCatalog.GetString("Description"), descriptionField);

            col.Expands = true;

            var propertyCellView = new ComboBoxCellView(propertyNameField);

            propertyCellView.Editable          = true;
            propertyCellView.ItemsField        = propertiesField;
            propertyCellView.SelectionChanged += delegate(object sender, WidgetEventArgs e) {
                var treeNavigator = store.GetNavigatorAt(treeView.CurrentEventRow);
                if (treeNavigator == null)
                {
                    return;
                }
                var item = treeNavigator.GetValue(itemField);
                if (item == null)
                {
                    return;
                }
                var text2 = treeNavigator.GetValue(propertyNameField);

                GLib.Timeout.Add(10, delegate {
                    var text = treeNavigator.GetValue(propertyNameField);
                    foreach (var pref in item.Preferences)
                    {
                        if (pref.Name == text)
                        {
                            item.SelectedPreference = pref;
                            this.viewModel.SetOptionAndUpdatePreview(pref.IsChecked, item.Option, item.GetPreview());
                        }
                    }
                    return(false);
                });
            };
            col         = new ListViewColumn(GettextCatalog.GetString("Property"), propertyCellView);
            col.Expands = true;
            treeView.Columns.Add(col);

            var severityCellView = new ComboBoxCellView(notificationPreferenceField);

            severityCellView.Editable   = true;
            severityCellView.ItemsField = notificationPreferencesField;
            col = new ListViewColumn(GettextCatalog.GetString("Severity"), severityCellView);
            treeView.Columns.Add(col);

            this.PackStart(treeView, true, true);
            var wrappedEditor = Xwt.Toolkit.CurrentEngine.WrapWidget((Gtk.Widget)viewModel.TextViewHost, Xwt.NativeWidgetSizing.DefaultPreferredSize);

            this.PackEnd(wrappedEditor, true, true);
            FillTreeStore();
        }