protected void SetTargetItemValue([NotNull] TTargetItem targetItem, [CanBeNull] object targetItemValue) { if (targetItemValue == BindingValue.UnsetValue) { if (FallbackValue != null) { targetItemValue = FallbackValue.Value; } else { if (!SourceItemBinding.TryGetItem(out _)) { Log("Source item is null and fallback value is not set. " + "This may lead to diplaying value from the previous source item. " + "Set fallback value to override previous one."); } } } if (targetItemValue != BindingValue.UnsetValue) { try { TargetItemBinding.SetValue(targetItem, (TTargetItemValue)targetItemValue, _compositeItemBindingMode == BindingMode.TwoWay); } catch (Exception ex) { Log($"An \"{LogFormatter.FormatException(ex)}\" exception occurred while executing " + $"\"{LogFormatter.FormatTypeName(TargetItemBinding)}.{nameof(TargetItemBinding.SetValue)}\" method."); } } }
public void Dispose() { UnsubscribeFromSourceItemEvents(); UnsubscribeFromTargetItemEvents(); SourceItemBinding.Dispose(); TargetItemBinding.Dispose(); }
internal CompositeItemBinding( [NotNull] SourceItemBinding <TSourceItem, TSourceItemValue> sourceItemBinding, [NotNull] TargetItemBinding <TTargetItem, TTargetItemValue> targetItemBinding, BindingMode requestedBindingMode, [NotNull] ICompositeItemBindingValueConverter valueConverter) : base(sourceItemBinding, targetItemBinding, requestedBindingMode, valueConverter) { }
public void SetSourceItemReference(IItemReference <TSourceItem> itemReference) { UnsubscribeFromSourceItemEvents(); SourceItemBinding.SetItemReference(itemReference); SubscribeToSourceItemEvents(); if (TargetItemBinding.TryGetItem(out var targetItem)) { SetInitialValues(targetItem); } }
protected CompositeItemBindingBase( [NotNull] SourceItemBinding <TSourceItem, TSourceItemValue> sourceItemBinding, [NotNull] TargetItemBinding <TTargetItem, TTargetItemValue> targetItemBinding, BindingMode requestedBindingMode, [NotNull] CompositeItemBindingValueConverter <TSourceItem> valueConverter) { SourceItemBinding = sourceItemBinding; TargetItemBinding = targetItemBinding; RequestedBindingMode = requestedBindingMode; ValueConverter = valueConverter; SetLogger(); }
internal CompositeItemBindingBuilder( [NotNull] SourceItemBinding <TSourceItem, TSourceItemValue> sourceItemBinding, [NotNull] TargetItemBinding <TTargetItem, TTargetItemValue> targetItemBinding, [NotNull] BindingSet <TSourceItem> bindingSet) { _compositeItemBinding = new CompositeItemBinding <TSourceItem, TSourceItemValue, TTargetItem, TTargetItemValue>( sourceItemBinding, targetItemBinding, BindingMode.TwoWay, new CompositeItemBindingValueConverter <DefaultValueConverter>()); bindingSet.Add(_compositeItemBinding); }
protected bool TryGetSourceItemValue([NotNull] TSourceItem sourceItem, out TSourceItemValue sourceItemValue) { try { return(SourceItemBinding.TryGetValue(sourceItem, out sourceItemValue)); } catch (Exception ex) { Log($"An \"{LogFormatter.FormatException(ex)}\" exception occurred while executing " + $"\"{LogFormatter.FormatTypeName(SourceItemBinding)}.{nameof(SourceItemBinding.TryGetValue)}\" method."); sourceItemValue = default; return(false); } }
protected void SetSourceItemValue([NotNull] TSourceItem sourceItem, [CanBeNull] TTargetItemValue targetItemValue) { var sourceItemValue = ValueConverter.ConvertBack(targetItemValue, typeof(TSourceItemValue)); if (sourceItemValue != BindingValue.UnsetValue) { try { SourceItemBinding.SetValue(sourceItem, (TSourceItemValue)sourceItemValue, _compositeItemBindingMode == BindingMode.TwoWay); } catch (Exception ex) { Log($"An \"{LogFormatter.FormatException(ex)}\" exception occurred while executing " + $"\"{LogFormatter.FormatTypeName(SourceItemBinding)}.{nameof(SourceItemBinding.SetValue)}\" method."); } } }
protected override void UnsubscribeFromSourceItemEvents() { if (SourceItemBinding.TryGetItem(out var sourceItem)) { if (IsFromSourceToTargetBindingMode(includingOneTimeBindingMode: false)) { try { SourceItemBinding.UnsubscribeFromEvents(sourceItem); } catch (Exception ex) { Log($"An \"{LogFormatter.FormatException(ex)}\" exception occurred while executing " + $"\"{LogFormatter.FormatTypeName(SourceItemBinding)}.{nameof(SourceItemBinding.UnsubscribeFromEvents)}\" method."); } } } }
private void SetLogger() { SourceItemBinding.SetLogger(Logger); TargetItemBinding.SetLogger(Logger); ValueConverter.SetLogger(Logger); }