public void SettersAppliedOnConditionChanged() { var setterbp = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null); var element = new MockElement(); var trigger = new DataTrigger(typeof(VisualElement)) { Binding = new Binding("foo"), Value = "foobar", Setters = { new Setter { Property = setterbp, Value = "qux" }, } }; element.SetValue(setterbp, "default"); element.Triggers.Add(trigger); Assert.AreEqual("default", element.GetValue(setterbp)); element.BindingContext = new { foo = "foobar" }; Assert.AreEqual("qux", element.GetValue(setterbp)); element.BindingContext = new { foo = "" }; Assert.AreEqual("default", element.GetValue(setterbp)); }
public void SettersNotAppliedOnAttachIfOneConditionIsFalse() { var conditionbp = BindableProperty.Create("foo", typeof(string), typeof(BindableObject), null); var setterbp = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null); var element = new MockElement(); var multiTrigger = new MultiTrigger(typeof(VisualElement)) { Conditions = { new PropertyCondition { Property = conditionbp, Value = "foobar" }, new BindingCondition { Binding = new Binding("baz"), Value = "foobaz" }, }, Setters = { new Setter { Property = setterbp, Value = "qux" }, } }; element.SetValue(setterbp, "default"); element.SetValue(conditionbp, "foobar"); element.BindingContext = new { baz = "foobazXX" }; Assert.AreEqual("default", element.GetValue(setterbp)); element.Triggers.Add(multiTrigger); Assert.AreEqual("default", element.GetValue(setterbp)); }
public void SettersUnappliedOnDetach () { var conditionbp = BindableProperty.Create ("foo", typeof(string), typeof(BindableObject), null); var setterbp = BindableProperty.Create ("bar", typeof(string), typeof(BindableObject), null); var element = new MockElement (); var multiTrigger = new MultiTrigger (typeof(VisualElement)) { Conditions = { new PropertyCondition { Property = conditionbp, Value = "foobar" }, new BindingCondition { Binding = new Binding ("baz"), Value = "foobaz" }, }, Setters = { new Setter { Property = setterbp, Value = "qux" }, } }; element.SetValue (setterbp, "default"); element.BindingContext = new {baz = "" }; element.Triggers.Add (multiTrigger); Assert.AreEqual ("default", element.GetValue (setterbp)); //both conditions false element.SetValue (conditionbp, "foobar"); Assert.AreEqual ("default", element.GetValue (setterbp)); //one condition false element.BindingContext = new {baz = "foobaz"}; Assert.AreEqual ("qux", element.GetValue (setterbp)); //both condition true element.Triggers.Remove (multiTrigger); Assert.AreEqual ("default", element.GetValue (setterbp)); }
public void SettersUnappliedOnDetach() { var conditionbp = BindableProperty.Create("foo", typeof(string), typeof(BindableObject), null); var setterbp = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null); var element = new MockElement(); var trigger = new Trigger(typeof(VisualElement)) { Property = conditionbp, Value = "foobar", Setters = { new Setter { Property = setterbp, Value = "qux" }, } }; element.SetValue(setterbp, "default"); element.Triggers.Add(trigger); Assert.AreEqual("default", element.GetValue(setterbp)); element.SetValue(conditionbp, "foobar"); Assert.AreEqual("qux", element.GetValue(setterbp)); element.Triggers.Remove(trigger); Assert.AreEqual("default", element.GetValue(setterbp)); }
// https://bugzilla.xamarin.com/show_bug.cgi?id=32896 public void SettersWithBindingsUnappliedIfConditionIsFalse() { var conditionbp = BindableProperty.Create("foo", typeof(string), typeof(BindableObject), null); var setterbp = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null); var element = new MockElement(); var trigger = new Trigger(typeof(VisualElement)) { Property = conditionbp, Value = "foobar", Setters = { new Setter { Property = setterbp, Value = new Binding(".", source: "Qux") }, } }; element.SetValue(setterbp, "default"); element.Triggers.Add(trigger); Assume.That(element.GetValue(setterbp), Is.EqualTo("default")); //sets the condition to true element.SetValue(conditionbp, "foobar"); Assume.That(element.GetValue(setterbp), Is.EqualTo("Qux")); //unsets the condition element.SetValue(conditionbp, "baz"); Assert.That(element.GetValue(setterbp), Is.EqualTo("default")); }
public void TriggersAppliedOnMultipleElements() { var setterbp = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null); var trigger = new DataTrigger(typeof(VisualElement)) { Binding = new Binding("foo"), Value = "foobar", Setters = { new Setter { Property = setterbp, Value = "qux" }, } }; var element0 = new MockElement { Triggers = { trigger } }; var element1 = new MockElement { Triggers = { trigger } }; element0.BindingContext = element1.BindingContext = new { foo = "foobar" }; Assert.AreEqual("qux", element0.GetValue(setterbp)); Assert.AreEqual("qux", element1.GetValue(setterbp)); }
public void SettersAppliedOnAttachIfConditionIsTrue () { var conditionbp = BindableProperty.Create ("foo", typeof(string), typeof(BindableObject), null); var setterbp = BindableProperty.Create ("bar", typeof(string), typeof(BindableObject), null); var element = new MockElement (); var trigger = new Trigger (typeof(VisualElement)) { Property = conditionbp, Value = "foobar", Setters = { new Setter { Property = setterbp, Value = "qux" }, } }; element.SetValue (setterbp, "default"); element.SetValue (conditionbp, "foobar"); Assert.AreEqual ("default", element.GetValue (setterbp)); element.Triggers.Add (trigger); Assert.AreEqual ("qux", element.GetValue (setterbp)); }
public void SettersAppliedAndUnappliedOnConditionsChange() { var conditionbp = BindableProperty.Create("foo", typeof(string), typeof(BindableObject), null); var setterbp = BindableProperty.Create("bar", typeof(string), typeof(BindableObject), null); var element = new MockElement(); var multiTrigger = new MultiTrigger(typeof(VisualElement)) { Conditions = { new PropertyCondition { Property = conditionbp, Value = "foobar" }, new BindingCondition { Binding = new Binding("baz"), Value = "foobaz" }, }, Setters = { new Setter { Property = setterbp, Value = "qux" }, } }; element.SetValue(setterbp, "default"); element.BindingContext = new { baz = "" }; element.Triggers.Add(multiTrigger); Assert.AreEqual("default", element.GetValue(setterbp)); //both conditions false element.SetValue(conditionbp, "foobar"); Assert.AreEqual("default", element.GetValue(setterbp)); //one condition false element.BindingContext = new { baz = "foobaz" }; Assert.AreEqual("qux", element.GetValue(setterbp)); //both condition true element.BindingContext = new { baz = "" }; Assert.AreEqual("default", element.GetValue(setterbp)); //one condition false element.BindingContext = new { baz = "foobaz" }; Assert.AreEqual("qux", element.GetValue(setterbp)); //both condition true element.SetValue(conditionbp, ""); Assert.AreEqual("default", element.GetValue(setterbp)); //one condition false element.SetValue(conditionbp, "foobar"); Assert.AreEqual("qux", element.GetValue(setterbp)); //both condition true element.SetValue(conditionbp, ""); element.BindingContext = new { baz = "foobaz" }; Assert.AreEqual("default", element.GetValue(setterbp)); //both conditions false }