/// <summary> /// Applies the current order of conditions to the <see cref="Conditions" /> collection /// </summary> public void ApplyOrder() { if (_disposed) { throw new ObjectDisposedException("ConditionalDataBinding"); } _conditions.Sort((a, b) => a.Order.CompareTo(b.Order)); for (int index = 0; index < _conditions.Count; index++) { DataBindingCondition <TLayerProperty, TProperty> condition = _conditions[index]; condition.Order = index + 1; } }
/// <inheritdoc /> public TProperty GetValue(TProperty baseValue) { if (_disposed) { throw new ObjectDisposedException("ConditionalDataBinding"); } DataBindingCondition <TLayerProperty, TProperty> condition = Conditions.FirstOrDefault(c => c.Evaluate()); if (condition != null) { Console.WriteLine(); } return(condition == null ? baseValue : condition.Value); }
/// <summary> /// Adds a condition to the conditional data binding's <see cref="Conditions" /> collection /// </summary> /// <returns>The newly created <see cref="DataBindingCondition{TLayerProperty,TProperty}" /></returns> public DataBindingCondition <TLayerProperty, TProperty> AddCondition() { if (_disposed) { throw new ObjectDisposedException("ConditionalDataBinding"); } DataBindingCondition <TLayerProperty, TProperty> condition = new DataBindingCondition <TLayerProperty, TProperty>(this); _conditions.Add(condition); ApplyOrder(); OnConditionsUpdated(); return(condition); }
/// <summary> /// Removes a condition from the conditional data binding's <see cref="Conditions" /> collection and disposes it /// </summary> /// <param name="condition"></param> public void RemoveCondition(DataBindingCondition <TLayerProperty, TProperty> condition) { if (_disposed) { throw new ObjectDisposedException("ConditionalDataBinding"); } if (!_conditions.Contains(condition)) { return; } _conditions.Remove(condition); condition.Dispose(); ApplyOrder(); OnConditionsUpdated(); }