public object ProvideValue(MarkupExtensionContext markupExtensionContext)
        {
            var type = markupExtensionContext.TypeRepository.GetByType(typeof(ResourceDictionary));
            var resourceDictionary = (ResourceDictionary)markupExtensionContext.TopDownValueContext.GetLastInstance(type);

            return(resourceDictionary[ResourceKey]);
        }
        /// <summary>
        /// Если str начинается с одинарной открывающей фигурной скобки, то метод обрабатывает его
        /// как вызов расширения разметки, и возвращает результат, или выбрасывает исключение,
        /// если при парсинге или выполнении возникли ошибки. Если же str начинается c комбинации
        /// {}, то остаток строки возвращается просто строкой.
        /// </summary>
        private Object processText(String text,
                                   String currentProperty, object currentObject, object dataContext)
        {
            if (String.IsNullOrEmpty(text))
            {
                return(String.Empty);
            }

            if (text[0] != '{')
            {
                // interpret whole text as string
                return(text);
            }
            else if (text.Length > 1 && text[1] == '}')
            {
                // interpret the rest as string
                return(text.Length > 2 ? text.Substring(2) : String.Empty);
            }
            else
            {
                MarkupExtensionsParser markupExtensionsParser = new MarkupExtensionsParser(
                    new MarkupExtensionsResolver(this), text);
                MarkupExtensionContext context = new MarkupExtensionContext(
                    this, text, currentProperty, currentObject, dataContext);
                object providedValue = markupExtensionsParser.ProcessMarkupExtension(context);
                if (providedValue is IFixupToken)
                {
                    fixupTokens.Add(( FixupToken )providedValue);
                    // Null means no value will be assigned to target property
                    return(null);
                }
                return(providedValue);
            }
        }
 public override object ProvideValue(MarkupExtensionContext extensionContext)
 {
     return(new RelativeSource
     {
         Mode = Mode,
     });
 }
Beispiel #4
0
        public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
        {
            var typeRepository = markupExtensionContext.TypeRepository;
            var typeAndMember  = GetTypeAndMember(Identifier);
            var prefixAndType  = GetPrefixAndType(typeAndMember.Item1);
            var xamlType       = typeRepository.GetByPrefix(prefixAndType.Item1, prefixAndType.Item2);

            return(GetValue(xamlType.UnderlyingType, typeAndMember.Item2));
        }
Beispiel #5
0
 public override object ProvideValue(MarkupExtensionContext extensionContext)
 {
     return(new Binding
     {
         Converter = Converter,
         Mode = Mode,
         SourcePropertyPath = Path,
     });
 }
Beispiel #6
0
        public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
        {
            if (Type != null)
            {
                return(Type);
            }

            return(ResolveFromString(TypeName, markupExtensionContext.ValueContext.TypeRepository));
        }
Beispiel #7
0
 public override object ProvideValue(MarkupExtensionContext extensionContext)
 {
     return(new Binding
     {
         Converter = Converter,
         ElementName = ElementName,
         Mode = Mode,
         Path = Path,
     });
 }
Beispiel #8
0
        private MarkupExtensionContext GetExtensionContext()
        {
            var inflationContext = new MarkupExtensionContext
            {
                TargetObject   = Previous.Instance,
                TargetProperty = Previous.Instance.GetType().GetRuntimeProperty(Previous.Member.Name),
                ValueContext   = ValueContext,
            };

            return(inflationContext);
        }
 public override object ProvideValue(MarkupExtensionContext extensionContext)
 {
     return(new Data.Binding
     {
         Converter = Converter,
         Mode = Mode,
         Priority = BindingPriority.TemplatedParent,
         RelativeSource = new RelativeSource(RelativeSourceMode.TemplatedParent),
         SourcePropertyPath = Path,
     });
 }
Beispiel #10
0
 public override object ProvideValue(MarkupExtensionContext extensionContext)
 {
     return(new Binding
     {
         Converter = Converter,
         ElementName = ElementName,
         Mode = Mode,
         RelativeSource = new RelativeSource(RelativeSourceMode.TemplatedParent),
         Path = Path,
         Priority = Priority,
     });
 }
Beispiel #11
0
        private MarkupExtensionContext GetExtensionContext()
        {
            var inflationContext = new MarkupExtensionContext
            {
                TargetObject        = Previous.Instance,
                TargetProperty      = Previous.Instance.GetType().GetRuntimeProperty(Previous.XamlMember.Name),
                TypeRepository      = ValuePipeline.TypeRepository,
                TopDownValueContext = topDownValueContext
            };

            return(inflationContext);
        }
Beispiel #12
0
 public override object ProvideValue(MarkupExtensionContext extensionContext)
 {
     return(new Binding
     {
         Converter = Converter,
         ConverterParameter = ConverterParameter,
         ElementName = ElementName,
         FallbackValue = FallbackValue,
         Mode = Mode,
         Path = Path,
         Priority = Priority,
     });
 }
Beispiel #13
0
        public override object ProvideValue(MarkupExtensionContext extensionContext)
        {
            var target             = extensionContext.TargetObject as Control;
            var targetProperty     = extensionContext.TargetProperty;
            var targetPropertyName = targetProperty.Name;
            var perspexProperty    = target.GetRegisteredProperties().First(property => property.Name == targetPropertyName);

            return(new XamlBindingDefinition
                   (
                       target,
                       perspexProperty,
                       new PropertyPath(Path),
                       Mode == BindingMode.Default ? BindingMode.OneWay : Mode
                   ));
        }
Beispiel #14
0
        public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
        {
            if (Number != 0)
            {
                return(Number);
            }

            if (Option != null)
            {
                return(Option);
            }

            if (Property != null)
            {
                return(Property);
            }

            return("Text From Markup Extension");
        }
Beispiel #15
0
        public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
        {
            if (Number != 0)
            {
                return Number;
            }

            if (Option != null)
            {
                return Option;
            }

            if (Property != null)
            {
                return Property;
            }

            return "Text From Markup Extension";
        }
        private void processFixupTokens( )
        {
            // Выполнить поиск fixup tokens, желания которых удовлетворены,
            // и вызвать расширения разметки для них снова
            List <FixupToken> tokens = new List <FixupToken>(fixupTokens);

            fixupTokens.Clear(  );
            foreach (FixupToken token in tokens)
            {
                if (token.Ids.All(id => objectsById.ContainsKey(id)))
                {
                    MarkupExtensionsParser markupExtensionsParser = new MarkupExtensionsParser(
                        new MarkupExtensionsResolver(this), token.Expression);
                    MarkupExtensionContext context = new MarkupExtensionContext(
                        this, token.Expression, token.PropertyName, token.Object, token.DataContext);
                    object providedValue = markupExtensionsParser.ProcessMarkupExtension(context);
                    if (providedValue is IFixupToken)
                    {
                        fixupTokens.Add(( FixupToken )providedValue);
                    }
                    else
                    {
                        // assign providedValue to property of object
                        if (null != providedValue)
                        {
                            PropertyInfo propertyInfo = token.Object.GetType(  ).GetProperty(
                                token.PropertyName);
                            object convertedValue = ConvertValueIfNeed(providedValue.GetType(),
                                                                       propertyInfo.PropertyType,
                                                                       providedValue);
                            //propertyInfo.SetValue(token.Object, convertedValue, null);
                            propertyInfo.GetSetMethod().Invoke(token.Object, new [] { convertedValue });
                        }
                    }
                }
                else
                {
                    fixupTokens.Add(token);
                }
            }
        }
Beispiel #17
0
 public override object ProvideValue(MarkupExtensionContext extensionContext)
 {
     return(new StyleResourceBinding(this.Name));
 }
Beispiel #18
0
        private MarkupExtensionContext GetExtensionContext()
        {
            var inflationContext = new MarkupExtensionContext
            {
                TargetObject = Previous.Instance,
                TargetProperty = Previous.Instance.GetType().GetRuntimeProperty(Previous.Member.Name),
                ValueContext = ValueContext,
            };

            return inflationContext;
        }
Beispiel #19
0
 public object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     return null;
 }
Beispiel #20
0
 public object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     return(null);
 }
 public override object ProvideValue(MarkupExtensionContext markupExtensionContext) => null;
        private MarkupExtensionContext GetExtensionContext(StateBag stateBag)
        {
            var inflationContext = new MarkupExtensionContext
            {
                TargetObject = stateBag.Parent.Instance,
                TargetProperty = stateBag.Parent.Instance.GetType().GetRuntimeProperty(stateBag.Parent.Property.Name),
                TypeRepository = this.XamlTypeRepository,
            };

            return inflationContext;
        }
 public object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     var type = markupExtensionContext.ValueContext.TypeRepository.GetByType(typeof (ResourceDictionary));
     var resourceDictionary = (ResourceDictionary) markupExtensionContext.ValueContext.TopDownValueContext.GetLastInstance(type);
     return resourceDictionary[ResourceKey];
 }
 public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     return "Text From Markup Extension";
 }
 public object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     var provideValue = ProvideValue(new ServiceLocator(markupExtensionContext));           
     return provideValue;
 }
Beispiel #26
0
 public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     return Number;
 }
Beispiel #27
0
 public abstract object ProvideValue(MarkupExtensionContext markupExtensionContext);
Beispiel #28
0
        public object ProvideValue(MarkupExtensionContext markupExtensionContext)
        {
            var provideValue = base.ProvideValue(new ServiceLocator(markupExtensionContext));

            return(provideValue);
        }
Beispiel #29
0
 public override object ProvideValue(MarkupExtensionContext extensionContext)
 {
     return(new XamlBindingDefinition(Path, Mode));
 }
Beispiel #30
0
 public abstract object ProvideValue(MarkupExtensionContext markupExtensionContext);        
 public WpfServiceLocator(MarkupExtensionContext markupExtensionContext)
 {
     this.markupExtensionContext = markupExtensionContext;
 }
Beispiel #32
0
        private MarkupExtensionContext GetExtensionContext()
        {
            var inflationContext = new MarkupExtensionContext
            {
                TargetObject = Previous.Instance,
                TargetProperty = Previous.Instance.GetType().GetRuntimeProperty(Previous.XamlMember.Name),
                TypeRepository = ValuePipeline.TypeRepository,
                TopDownValueContext = topDownValueContext
            };

            return inflationContext;
        }
Beispiel #33
0
 public ServiceLocator(MarkupExtensionContext markupExtensionContext)
 {
     this.markupExtensionContext = markupExtensionContext;
 }
Beispiel #34
0
 public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     return(point);
 }
 public object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     var type = markupExtensionContext.TypeRepository.GetXamlType(typeof (ResourceDictionary));
     var resourceDictionary = (ResourceDictionary) markupExtensionContext.TopDownMemberValueContext.GetMemberValue(type);
     return resourceDictionary[ResourceKey];
 }
Beispiel #36
0
 public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     return("Text From Markup Extension");
 }
 public object ProvideValue(MarkupExtensionContext markupExtensionContext)
 {
     return ProvideValue(new WpfServiceLocator(markupExtensionContext));
 }