Exemple #1
0
        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.");
                }
            }
        }
Exemple #2
0
        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)
 {
 }
Exemple #4
0
        public void SetSourceItemReference(IItemReference <TSourceItem> itemReference)
        {
            UnsubscribeFromSourceItemEvents();
            SourceItemBinding.SetItemReference(itemReference);
            SubscribeToSourceItemEvents();

            if (TargetItemBinding.TryGetItem(out var targetItem))
            {
                SetInitialValues(targetItem);
            }
        }
Exemple #5
0
        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();
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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.");
             }
         }
     }
 }
Exemple #10
0
 private void SetLogger()
 {
     SourceItemBinding.SetLogger(Logger);
     TargetItemBinding.SetLogger(Logger);
     ValueConverter.SetLogger(Logger);
 }