Пример #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.");
                }
            }
        }
Пример #2
0
 internal CompositeItemCommandBinding(
     [NotNull] SourceItemCommandBinding <TSourceItem, TSourceItemValue> sourceItemCommandBinding,
     [NotNull] TargetItemBinding <TTargetItem, TTargetItemValue> targetItemBinding,
     BindingMode requestedBindingMode,
     [NotNull] ICompositeItemBindingValueConverter valueConverter)
     : base(sourceItemCommandBinding, targetItemBinding, requestedBindingMode, valueConverter)
 {
 }
 internal TargetItemCommandBinding(
     [NotNull] TargetItemBinding <TCommandTriggerItem, TCommandTriggerItemValue> commandTriggerItemBinding,
     [NotNull] TargetItemBinding <TCommandParameterItem, TCommandPatameterItemValue> commandParameterItemBinding)
     : base(commandTriggerItemBinding.GetItemReference(), commandTriggerItemBinding.ItemValuePathAccessor)
 {
     _commandTriggerItemBinding   = commandTriggerItemBinding;
     _commandParameterItemBinding = commandParameterItemBinding;
 }
Пример #4
0
        public void Dispose()
        {
            UnsubscribeFromSourceItemEvents();
            UnsubscribeFromTargetItemEvents();

            SourceItemBinding.Dispose();
            TargetItemBinding.Dispose();
        }
Пример #5
0
 internal TargetItemCustomValueBinding(
     [NotNull] TargetItemBinding <TItem, TValue> targetItemBinding,
     [CanBeNull] TCustomValue customValue)
     : base(targetItemBinding.ItemReference, targetItemBinding.ItemValuePathAccessor)
 {
     _targetItemBinding = targetItemBinding;
     _customValue       = customValue;
 }
Пример #6
0
 internal SourceItemBindingBuilder(
     [NotNull] ItemReference <TSourceItem> sourceItemReference,
     [NotNull] TargetItemBinding <TTargetItem, TTargetItemValue> targetItemBinding,
     [NotNull] BindingSet <TSourceItem> bindingSet)
 {
     _sourceItemReference = sourceItemReference;
     _targetItemBinding   = targetItemBinding;
     _bindingSet          = bindingSet;
 }
Пример #7
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();
        }
Пример #8
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);
        }
        internal CompositeItemCommandBindingBuilder(
            [NotNull] SourceItemCommandBinding <TSourceItem, TSourceItemValue> sourceItemBinding,
            [NotNull] TargetItemBinding <TTargetItem, TTargetItemValue> targetItemBinding,
            [NotNull] BindingSet <TSourceItem> bindingSet)
        {
            _compositeItemBinding = new CompositeItemCommandBinding <TSourceItem, TSourceItemValue, TTargetItem, TTargetItemValue>(
                sourceItemBinding,
                targetItemBinding,
                BindingMode.OneWayToSource,
                new CompositeItemBindingValueConverter <TSourceItem>(typeof(DefaultValueConverter)));

            _bindingSet = bindingSet;
            _bindingSet.Add(_compositeItemBinding);
        }
        internal CompositeItemCommandBindingBuilder(
            [NotNull] SourceItemCommandBinding <TSourceItem, TSourceItemValue> sourceItemBinding,
            [NotNull] TargetItemBinding <TTargetItem, TTargetItemValue> targetItemBinding,
            [NotNull] BindingSet <TSourceItem> bindingSet,
            [NotNull] ICompositeItemBinding <TSourceItem> oldCompositeItemBinding)
        {
            _compositeItemBinding = new CompositeItemCommandBinding <TSourceItem, TSourceItemValue, TTargetItem, TTargetItemValue>(
                sourceItemBinding,
                targetItemBinding,
                oldCompositeItemBinding.RequestedBindingMode,
                oldCompositeItemBinding.ValueConverter);

            _bindingSet = bindingSet;
            _bindingSet.Remove(oldCompositeItemBinding);
            _bindingSet.Add(_compositeItemBinding);
        }
Пример #11
0
        protected bool TryGetTargetItemValue([NotNull] TTargetItem targetItem, out TTargetItemValue targetItemValue)
        {
            try
            {
                return(TargetItemBinding.TryGetValue(targetItem, out targetItemValue));
            }
            catch (Exception ex)
            {
                Log($"An \"{LogFormatter.FormatException(ex)}\" exception occurred while executing " +
                    $"\"{LogFormatter.FormatTypeName(TargetItemBinding)}.{nameof(TargetItemBinding.TryGetValue)}\" method.");

                targetItemValue = default;

                return(false);
            }
        }
Пример #12
0
 private void UnsubscribeFromTargetItemEvents()
 {
     if (TargetItemBinding.TryGetItem(out var targetItem))
     {
         if (IsFromTargetToSourceBindingMode())
         {
             try
             {
                 TargetItemBinding.UnsubscribeFromEvents(targetItem);
             }
             catch (Exception ex)
             {
                 Log($"An \"{LogFormatter.FormatException(ex)}\" exception occurred while executing " +
                     $"\"{LogFormatter.FormatTypeName(TargetItemBinding)}.{nameof(TargetItemBinding.UnsubscribeFromEvents)}\" method.");
             }
         }
     }
 }
Пример #13
0
 private void SetLogger()
 {
     SourceItemBinding.SetLogger(Logger);
     TargetItemBinding.SetLogger(Logger);
     ValueConverter.SetLogger(Logger);
 }