Example #1
0
		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);
		}
Example #2
0
		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));
		}
Example #3
0
		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));
		}