Esempio n. 1
0
        public static StringProxy GetStringValue(this IValueProvider valueProvider, IResourceContext context,
                                                 bool setKey)
        {
            var proxy = new StringProxy();
            var value = valueProvider.ProvideValue(context);

            if (value is BindingBase binding)
            {
                BindingOperations.SetBinding(proxy, StringProxy.ValueProperty, binding);
                if (setKey)
                {
                    BindingOperations.SetBinding(proxy, StringProxy.KeyProperty, binding);
                }
            }
            else
            {
                proxy.Value = value?.ToString();
                if (setKey)
                {
                    proxy.Key = value;
                }
            }

            return(proxy);
        }
Esempio n. 2
0
        public void XamlLoadSharedTest()
        {
            string text = @"
            <ResourceDictionary xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' xmlns:test='clr-namespace:Granular.Presentation.Tests.Markup;assembly=Granular.Presentation.Tests'>
                <test:LoaderTestElement x:Shared='false' x:Key='item1' Value1='1' Value2='2'/>
                <test:LoaderTestElement x:Shared='true' x:Key='item2' Value1='3' Value2='4'/>
            </ResourceDictionary>";

            XamlElement        rootElement = XamlParser.Parse(text);
            ResourceDictionary dictionary  = XamlLoader.Load(rootElement) as ResourceDictionary;

            Assert.IsNotNull(dictionary);
            Assert.IsTrue(dictionary.Contains("item1"));
            Assert.IsTrue(dictionary.Contains("item2"));

            IValueProvider valueProvider = dictionary.GetValue("item1") as IValueProvider;

            Assert.IsNotNull(valueProvider);

            LoaderTestElement item1a = valueProvider.ProvideValue() as LoaderTestElement;

            Assert.IsNotNull(item1a);
            Assert.AreEqual(1, ((LoaderTestElement)item1a).Value1);
            Assert.AreEqual(2, ((LoaderTestElement)item1a).Value2);

            LoaderTestElement item1b = valueProvider.ProvideValue() as LoaderTestElement;

            Assert.IsNotNull(item1b);
            Assert.AreNotEqual(item1a, item1b);
            Assert.AreEqual(1, ((LoaderTestElement)item1b).Value1);
            Assert.AreEqual(2, ((LoaderTestElement)item1b).Value2);

            LoaderTestElement item2 = dictionary.GetValue("item2") as LoaderTestElement;

            Assert.IsNotNull(item2);
            Assert.AreEqual(3, ((LoaderTestElement)item2).Value1);
            Assert.AreEqual(4, ((LoaderTestElement)item2).Value2);
        }
Esempio n. 3
0
        public static BoolProxy GetBoolValue(this IValueProvider valueProvider, IResourceContext context)
        {
            var proxy = new BoolProxy();
            var value = valueProvider.ProvideValue(context);

            if (value is BindingBase binding)
            {
                BindingOperations.SetBinding(proxy, BoolProxy.ValueProperty, binding);
            }
            else
            {
                proxy.Value = value is bool b && b;
            }

            return(proxy);
        }
        public object ProvideValue(IResourceContext context)
        {
            var value = innerProvider.ProvideValue(context);

            if (value is BindingBase binding)
            {
                binding.FallbackValue = defaultValue;
                return(binding);
            }

            if (value is T)
            {
                return(value);
            }

            return(defaultValue);
        }
            public object ProvideValue(IResourceContext context)
            {
                var value = innerProvider.ProvideValue(context);

                if (value is Binding binding)
                {
                    binding.Converter = binding.Converter == null
                        ? valueConverter
                        : new ConverterWrapper(valueConverter, binding.Converter);
                    return(binding);
                }

                if (value is BindingBase)
                {
                    return(value);
                }

                return(valueConverter.Convert(value, typeof(object), null, CultureInfo.CurrentCulture));
            }
        private object GetResourceValue()
        {
            object value;

            if (!resourceContainer.TryGetResource(resourceKey, out value))
            {
                return ObservableValue.UnsetValue;
            }

            if (!(value is IValueProvider))
            {
                return value;
            }

            if (currentValueProvider != value)
            {
                currentValueProvider = (IValueProvider)value;
                currentValue = currentValueProvider.ProvideValue();
            }

            return currentValue;
        }
        private object GetResourceValue()
        {
            object value;

            if (!resourceContainer.TryGetResource(resourceKey, out value))
            {
                return(ObservableValue.UnsetValue);
            }

            if (!(value is IValueProvider))
            {
                return(value);
            }

            if (currentValueProvider != value)
            {
                currentValueProvider = (IValueProvider)value;
                currentValue         = currentValueProvider.ProvideValue();
            }

            return(currentValue);
        }