void ComboBox_Changed(DropDownList.ChangedEventArgs args) { if (!args.ChangedByUser) { return; } var newTrigger = (string)args.Value; var currentTriggers = CoalescedPropertyValue().GetValue(); if (string.IsNullOrWhiteSpace(currentTriggers) || args.Index < 0) { // Keep existing and remove absent triggers after hand input. var availableTriggers = new HashSet <string>(comboBox.Items.Select(item => item.Text)); var setTrigger = string.Join( ",", newTrigger. Split(','). Select(el => el.Trim()). Where(el => availableTriggers.Contains(el)). Distinct(new TriggerStringComparer()) ); SetProperty(setTrigger.Length == 0 ? null : setTrigger); if (setTrigger != newTrigger) { comboBox.Text = setTrigger; } return; } var triggers = new List <string>(); var added = false; string newMarker, newAnimation; SplitTrigger(newTrigger, out newMarker, out newAnimation); foreach (var trigger in currentTriggers.Split(',').Select(i => i.Trim())) { string marker, animation; SplitTrigger(trigger, out marker, out animation); if (animation == newAnimation) { if (!added) { added = true; triggers.Add(newTrigger); } } else { triggers.Add(trigger); } } if (!added) { triggers.Add(newTrigger); } var newValue = string.Join(",", triggers); SetProperty(newValue); comboBox.Text = newValue; }
void ComboBox_Changed(DropDownList.ChangedEventArgs args) { if (!args.ChangedByUser) { return; } var newTrigger = (string)args.Value; var currentTriggers = CoalescedPropertyValue().GetValue(); if (string.IsNullOrWhiteSpace(currentTriggers) || args.Index < 0) { SetProperty(newTrigger); return; } var triggers = new List <string>(); var added = false; string newMarker, newAnimation; SplitTrigger(newTrigger, out newMarker, out newAnimation); foreach (var trigger in currentTriggers.Split(',').Select(i => i.Trim())) { string marker, animation; SplitTrigger(trigger, out marker, out animation); if (animation == newAnimation) { if (!added) { added = true; triggers.Add(newTrigger); } } else { triggers.Add(trigger); } } if (!added) { triggers.Add(newTrigger); } var newValue = string.Join(",", triggers); SetProperty(newValue); comboBox.Text = newValue; }