public ICompositeItemCommandBindingBuilder <TSourceItem> WithCommandParameter <TCommandParameterTargetItem, TCommandParameterTargetItemValue>( TCommandParameterTargetItem targetItem, Expression <Func <TCommandParameterTargetItem, TCommandParameterTargetItemValue> > targetItemValue, ItemReferenceType referenceType) where TCommandParameterTargetItem : class { if (targetItem == null) { throw new ArgumentNullException(nameof(targetItem)); } if (targetItemValue == null) { throw new ArgumentNullException(nameof(targetItemValue)); } var targetItemReference = new ItemReference <TCommandParameterTargetItem>(targetItem, referenceType); var targetItemValueAccessor = new ItemValueAccessor <TCommandParameterTargetItem, TCommandParameterTargetItemValue>(targetItemValue); var targetItemCommandParameterBinding = new TargetItemPropertyBinding <TCommandParameterTargetItem, TCommandParameterTargetItemValue>( targetItemReference, targetItemValueAccessor); var targetItemCommandBinding = new TargetItemCommandBinding <TTargetItem, TTargetItemValue, TCommandParameterTargetItem, TCommandParameterTargetItemValue>( _compositeItemBinding.TargetItemBinding, targetItemCommandParameterBinding); return(new CompositeItemCommandBindingBuilder <TSourceItem, TSourceItemValue, TTargetItem, TCommandParameterTargetItemValue>( _compositeItemBinding.SourceItemBinding, targetItemCommandBinding, _bindingSet, _compositeItemBinding)); }
public ITargetItemBindingBuilder <TSourceItem, TTargetItem> Bind <TTargetItem>( [CanBeNull] TTargetItem targetItem, ItemReferenceType referenceType = ItemReferenceType.Weak) where TTargetItem : class { var targetItemReference = new ItemReference <TTargetItem>(targetItem, referenceType); return(new TargetItemBindingBuilder <TSourceItem, TTargetItem>(_sourceItemReference, targetItemReference, this)); }
internal ItemReference([CanBeNull] TItem item, ItemReferenceType referenceType) { if (referenceType == ItemReferenceType.Weak) { _itemWeakReference = new WeakReference(item); } else { _itemStrongReference = item; } _referenceType = referenceType; }