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); }
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); }