private void Method11Target_SelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBox cb = sender as ComboBox; if (cb != null) { if (cb.SelectedIndex == -1) { return; } else { DataGrid grid = this.Method11Grid as DataGrid; if (grid == null || grid.SelectedIndex == -1) { return; } //object values = grid.Items[grid.SelectedIndex]; DomainMapRow row = grid.Items.GetItemAt(grid.SelectedIndex) as DomainMapRow; ComboData rowSource = _domainTargetValues[cb.SelectedIndex] as ComboData; if (row != null) // if there is a matching target domain value for the selection { // Then update the row DomainMapValues and set the tooltip to the value for the code row.TargetSelectedItem = cb.SelectedIndex; row.TargetTooltip = rowSource.Tooltip; cb.ToolTip = rowSource.Tooltip; } } } }
public void resetDomainValuesUI(List <ComboData> domainValues, string sourceTarget) { if (sourceTarget == _source) { _domainSourceValues = domainValues; } else if (sourceTarget == _target) { _domainTargetValues = domainValues; } if (_domainTargetValues != null && _domainTargetValues.Count > 0) { Method11Grid.Items.Clear(); for (int i = 0; i < _domainTargetValues.Count; i++) { ComboData domainValue = _domainTargetValues[i]; if (domainValue.Id != _noneField) // don't want to create a row for None by default { int selected = 0; // use the default None here... for (int s = 0; s < _domainSourceValues.Count; s++) { if (Equals(_domainSourceValues[s].Tooltip, domainValue.Tooltip)) // tooltip includes both coded value and description, only do initial match if identical values { selected = s; } } // used to always set source selected to 0 - None Method11Grid.Items.Add(new DomainMapRow() { Source = _domainSourceValues, SourceSelectedItem = selected, SourceTooltip = "None", Target = _domainTargetValues, TargetSelectedItem = i, TargetTooltip = getDomainTooltip(domainValue.Id, domainValue.Value) }); } } } if (Method11Grid.Items.Count > 0) { DomainMapRemove.IsEnabled = true; } else { DomainMapRemove.IsEnabled = false; } Method11Grid.InvalidateArrange(); }
public List <ComboData> getDomainValuesforTable(TableDefinition def, string fieldName) { List <ComboData> domainValues = new List <ComboData>(); // always add a blank at the start ComboData item = new ComboData(); item.Id = _noneField; item.Value = _noneField; item.Tooltip = _noneField; domainValues.Add(item); try { IReadOnlyList <ArcGIS.Core.Data.Field> fields = def.GetFields(); ArcGIS.Core.Data.Field thefield = fields.First(field => field.Name.ToLower() == fieldName.ToLower()); IReadOnlyList <ArcGIS.Core.Data.Subtype> subtypes = def.GetSubtypes(); if (subtypes.Count == 0) { Domain domain = thefield.GetDomain(); if (domain is CodedValueDomain) { var codedValueDomain = domain as CodedValueDomain; SortedList <object, string> codedValuePairs = codedValueDomain.GetCodedValuePairs(); for (int i = 0; i < codedValuePairs.Count; i++) { item = new ComboData(); item.Id = codedValuePairs.ElementAt(i).Key.ToString(); item.Value = codedValuePairs.ElementAt(i).Value.ToString(); item.Tooltip = getDomainTooltip(item.Id, item.Value); domainValues.Add(item); } } } else if (subtypes.Count > 0) { List <string> domainNames = new List <string>(); for (int s = 0; s < subtypes.Count; s++) { ArcGIS.Core.Data.Subtype stype = subtypes[s]; Domain domain = thefield.GetDomain(stype); if (domain != null) { string dname = domain.GetName(); if (domain is CodedValueDomain && !domainNames.Contains(dname)) { domainNames.Add(dname); var codedValueDomain = domain as CodedValueDomain; SortedList <object, string> codedValuePairs = codedValueDomain.GetCodedValuePairs(); for (int i = 0; i < codedValuePairs.Count; i++) { item = new ComboData(); item.Id = codedValuePairs.ElementAt(i).Key.ToString(); item.Value = codedValuePairs.ElementAt(i).Value.ToString(); item.Tooltip = getDomainTooltip(item.Id, item.Value) + " - " + dname; bool found = false; for (int cv = 0; cv < domainValues.Count; cv++) { ComboData dv = domainValues[cv]; if (item.Id.Equals(dv.Id) && item.Value.Equals(dv.Value) && item.Tooltip.Equals(dv.Tooltip)) { found = true; } } if (!found) { domainValues.Add(item); } } } } } } } catch { ArcGIS.Desktop.Framework.Dialogs.MessageBox.Show("Unable to retrieve domain values for " + fieldName); return(domainValues); } return(domainValues); }