public void EnterAndExitActionsTriggered () { var conditionbp = BindableProperty.Create ("foo", typeof(string), typeof(BindableObject), null); var element = new MockElement (); var enteraction = new MockTriggerAction (); var exitaction = new MockTriggerAction (); var trigger = new Trigger (typeof(VisualElement)) { Property = conditionbp, Value = "foobar", EnterActions = { enteraction }, ExitActions = { exitaction } }; Assert.False (enteraction.Invoked); Assert.False (exitaction.Invoked); element.Triggers.Add (trigger); Assert.False (enteraction.Invoked); Assert.False (exitaction.Invoked); element.SetValue (conditionbp, "foobar"); Assert.True (enteraction.Invoked); Assert.False (exitaction.Invoked); enteraction.Invoked = exitaction.Invoked = false; Assert.False (enteraction.Invoked); Assert.False (exitaction.Invoked); element.SetValue (conditionbp, ""); Assert.False (enteraction.Invoked); Assert.True (exitaction.Invoked); }
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 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)); }