public void ShouldCallValueChangedCallbackWhenDataContextChanges()
        {
            var dataContext = new NotifyingDataContext {
                Property = "OldPropertyValue"
            };
            var target = new FrameworkElement();

            target.DataContext = dataContext;
            var    adapter                     = new DataContextPropertyAdapter(target, "Property");
            bool   callbackWasCalled           = false;
            object newDataContextPropertyValue = null;

            adapter.ValueChangedCallback =
                newValue =>
            {
                callbackWasCalled           = true;
                newDataContextPropertyValue = newValue;
            };

            target.DataContext = new DataContext {
                Property = "OtherPropertyValue"
            };

            Assert.IsTrue(callbackWasCalled);
            Assert.AreEqual("OtherPropertyValue", newDataContextPropertyValue);
        }
        public void ShouldDoNothingWhenSettingPropertyToNullDataContext()
        {
            var target = new FrameworkElement();

            target.DataContext = null;
            var adapter = new DataContextPropertyAdapter(target, "Property");

            adapter.SetValue("AnotherPropertyValue");
        }
        public void ShouldGetNoValueWhenDataContextIsNull()
        {
            var target = new FrameworkElement();

            target.DataContext = null;
            var adapter = new DataContextPropertyAdapter(target, "Property");

            var value = adapter.GetValue();

            Assert.AreSame(SettingsConstants.NoValue, value);
        }
        public void ShouldGetValueFromDataContextProperty()
        {
            var target = new FrameworkElement();

            target.DataContext = new DataContext {
                Property = "PropertyValue"
            };
            var adapter = new DataContextPropertyAdapter(target, "Property");

            var value = adapter.GetValue();

            Assert.AreEqual("PropertyValue", value);
        }
        public void ShouldSetValueToDataContextProperty()
        {
            var dataContext = new DataContext {
                Property = "OldPropertyValue"
            };
            var target = new FrameworkElement();

            target.DataContext = dataContext;
            var adapter = new DataContextPropertyAdapter(target, "Property");

            adapter.SetValue("NewPropertyValue");

            Assert.AreEqual("NewPropertyValue", dataContext.Property);
        }
예제 #6
0
        public IEnumerable <ISettingBinding> ProvideBindings(DependencyObject target)
        {
            var builder          = new ValueBindingBuilder();
            var @namespace       = Settings.GetNamespace(target);
            var accessor         = Settings.CurrentStoreAccessor;
            var targetAdapter    = new DataContextPropertyAdapter((FrameworkElement)target, Property);
            var exceptionHandler = new DebugValueAdapterExceptionHandler(Property, target, Store, Setting, @namespace);
            var binding          = builder
                                   .SetTargetAdapter(targetAdapter)
                                   .SetSourceAdapter(accessor, Store, @namespace, Setting)
                                   .SetExceptionHandler(exceptionHandler.LogAndSwallowException)
                                   .Build();

            return(new[] { binding });
        }
        public void ShouldNotSetValueToPropertyOfOldDataContextAfterItChanges()
        {
            var target      = new FrameworkElement();
            var dataContext = new DataContext {
                Property = "PropertyValue"
            };

            target.DataContext = dataContext;
            var adapter = new DataContextPropertyAdapter(target, "Property");

            target.DataContext = new DataContext {
                Property = "OtherPropertyValue"
            };
            adapter.SetValue("AnotherPropertyValue");

            Assert.AreEqual("PropertyValue", dataContext.Property);
        }