Exemplo n.º 1
0
        protected void UpdateChildBinding()
        {
            if (_currentChildBinding != null)
            {
                _currentChildBinding.Changed -= ChildSourceBindingChanged;
                _currentChildBinding.Dispose();
                _currentChildBinding = null;
            }

            if (PropertyInfo == null)
            {
                return;
            }

            var currentValue = PropertyInfo.GetValue(Source, PropertyIndexParameters());

            if (currentValue == null)
            {
                // value will be missing... so end consumer will need to use fallback values
            }
            else
            {
                _currentChildBinding          = SourceBindingFactory.CreateBinding(currentValue, _childTokens);
                _currentChildBinding.Changed += ChildSourceBindingChanged;
            }
        }
Exemplo n.º 2
0
 private void ClearPathSourceBinding()
 {
     if (_sourceBinding != null)
     {
         _sourceBinding.Changed -= SourceBindingOnChanged;
         _sourceBinding.Dispose();
         _sourceBinding = null;
     }
 }
Exemplo n.º 3
0
 //TODO: optim: dont recreate the source binding on each datacontext change, as SourcePropertyPath does not change.
 //TODO: optim: don't subscribe to the Changed event if the binding mode does not need it.
 protected override void OnDataContextChanged()
 {
     ClearPathSourceBinding();
     _sourceBinding = SourceBindingFactory.CreateBinding(DataContext, Description.SourcePropertyPath);
     if (_sourceBinding != null)
     {
         _sourceBinding.Changed += SourceBindingOnChanged;
     }
     base.OnDataContextChanged();
 }
Exemplo n.º 4
0
        protected override void Dispose(bool isDisposing)
        {
            if (isDisposing)
            {
                if (_currentChildBinding != null)
                {
                    _currentChildBinding.Changed -= ChildSourceBindingChanged;
                    _currentChildBinding.Dispose();
                    _currentChildBinding = null;
                }
            }

            base.Dispose(isDisposing);
        }
Exemplo n.º 5
0
        public bool TryCreateBinding(object source, PropertyToken currentToken, List <PropertyToken> remainingTokens, out ISourceBinding result)
        {
            if (source == null)
            {
                result = null;
                return(false);
            }

            result = remainingTokens.Count == 0 ? CreateLeafBinding(source, currentToken) : CreateChainedBinding(source, currentToken, remainingTokens);
            return(result != null);
        }
Exemplo n.º 6
0
        protected bool TryCreateBindingFromExtensions(object source, PropertyToken propertyToken,
                                                      List <PropertyToken> remainingTokens, out ISourceBinding result)
        {
            foreach (var extension in _extensions)
            {
                if (extension.TryCreateBinding(source, propertyToken, remainingTokens, out result))
                {
                    return(true);
                }
            }

            result = null;
            return(false);
        }