private void xamDataGrid1_CellActivating(object sender, Infragistics.Windows.DataPresenter.Events.CellActivatingEventArgs e) { //Find the GridViewPanel DependencyObject gv = Infragistics.Windows.Utilities.GetDescendantFromType((DependencyObject)e.Cell.DataPresenter, typeof(GridViewPanel), false); //Find dataRecord in grid view that is the same as active row DataRecord d = (DataRecord)e.Cell.Record; //Get DataRecord Presenter that represents current active record DependencyObject depRecPrstr = Infragistics.Windows.Utilities.GetDescendantFromType(gv, false, new Infragistics.Windows.Utilities.DependencyObjectSearchCallback(descendentCallbackDataRecordPresenter)); //Find the xamCombo if (depRecPrstr != null) { DependencyObject depXamCombo = Infragistics.Windows.Utilities.GetDescendantFromType(depRecPrstr, typeof(XamComboEditor), false); if (depXamCombo != null) { XamComboEditor ce = (XamComboEditor)depXamCombo; if (ce.Tag == null || (ce.Tag is bool && (bool)ce.Tag)) { ObservableCollection newCol = new ObservableCollection(); DataRowView dr = (DataRowView)d.DataItem; DAL.DataSetPrjCustFields.vDCS_ProjectLineDCSCustomFieldsRow prjLine = (DAL.DataSetPrjCustFields.vDCS_ProjectLineDCSCustomFieldsRow)dr.Row; foreach (Task task in TaskView) { switch (prjLine.ResourceType) { case "V": if (task.TaskNumber.EndsWith("C")) newCol.Add(task); break; case "E": if (task.TaskNumber.EndsWith("E")) newCol.Add(task); break; default: break; } } ComboBoxItemsProvider newProvider = new ComboBoxItemsProvider(); newProvider.DisplayMemberPath = "TaskNumber"; newProvider.ValuePath = "intTaskKey"; newProvider.ItemsSource = newCol; ce.ItemsProvider = newProvider; ce.Tag = false; } } } } public bool descendentCallbackDataRecordPresenter(DataRecordPresenter drp) { DataRecord d = (DataRecord)xamDataGrid1.ActiveRecord; return drp.DataRecord == d; }