- Timestamp:
- 07/18/20 00:25:54 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2521_ProblemRefactoring/HeuristicLab.Parameters/3.3/ParameterChangeHandler.cs
r17614 r17680 21 21 22 22 using System; 23 using System.ComponentModel; 23 24 using HeuristicLab.Core; 24 25 using HeuristicLab.Data; … … 214 215 => new StringValueParameterChangeHandler(parameter, handler); 215 216 } 217 218 public class ItemListParameterChangeHandler<T> : ParameterChangeHandler<ItemList<T>> where T : class,IItem { 219 private ItemList<T> last; 220 221 private ItemListParameterChangeHandler(IValueParameter<ItemList<T>> parameter, Action handler) 222 : base(parameter, handler) { 223 last = parameter.Value; 224 if (last != null && !(last is ReadOnlyItemList<T>)) { 225 last.PropertyChanged += ParameterValueOnListChanged; 226 } 227 } 228 229 protected override void ParameterOnValueChanged(object sender, EventArgs e) { 230 if (last != null && !(last is ReadOnlyItemList<T>)) 231 last.PropertyChanged -= ParameterValueOnListChanged; 232 last = ((IValueParameter<ItemList<T>>)sender).Value; 233 if (last != null && !(last is ReadOnlyItemList<T>)) 234 last.PropertyChanged += ParameterValueOnListChanged; 235 base.ParameterOnValueChanged(sender, e); 236 } 237 238 private void ParameterValueOnListChanged(object sender, PropertyChangedEventArgs e) { 239 if (e.PropertyName == "Item[]") handler(); 240 } 241 public static ItemListParameterChangeHandler<T> Create(IValueParameter<ItemList<T>> parameter, Action handler) 242 => new ItemListParameterChangeHandler<T>(parameter, handler); 243 } 216 244 }
Note: See TracChangeset
for help on using the changeset viewer.