public void PersistentProperties_shall_requery_its_value_if_bound_id_is_changed()
        {
            PersistentPropertyControlTree ControlTree = new PersistentPropertyControlTree();
            TestValueStore TestValueStore             = (TestValueStore)ControlTree.FindResource("PersistentProperties");

            TestValueStore["One.Bound.Three.Text"]               = "Hello, binding!";
            TestValueStore["One.Changed.Three.Text"]             = "Hello, another binding!";
            TestValueStore["One.Bound.ThreeTemplated.Opacity"]   = .1;
            TestValueStore["One.Changed.ThreeTemplated.Opacity"] = .9;

            Values  Values  = new Values("Bound");
            Binding Binding = new Binding("Value");

            Binding.Mode   = BindingMode.OneWay;
            Binding.Source = Values;
            ControlTree.Two.SetBinding(PersistentProperty.IdProperty, Binding);

            Assert.AreEqual("Hello, binding!", ControlTree.Three.Text);
            Assert.AreEqual(.1, ControlTree.DataTemplate.Opacity);

            Values.Value = "Changed";

            Assert.AreEqual("Hello, another binding!", ControlTree.Three.Text);
            Assert.AreEqual(.9, ControlTree.DataTemplate.Opacity);
        }
        public void PersistentProperties_shall_use_default_values_if_no_value_exist()
        {
            PersistentPropertyControlTree ControlTree = new PersistentPropertyControlTree();

            Assert.AreEqual(0.9, ControlTree.One.Opacity);
            Assert.AreEqual(0.8, ControlTree.Two.Opacity);
            Assert.AreEqual("Hello world", ControlTree.Three.Text);
            Assert.AreEqual(0.7, ControlTree.DataTemplate.Opacity);
        }
        public void PersistentProperties_with_same_name_shall_always_have_the_same_value()
        {
            PersistentPropertyControlTree ControlTree = new PersistentPropertyControlTree();

            PersistentProperty.SetId(ControlTree.DataTemplate, "Three");
            ControlTree.Three.Text = "Hello, world!";

            Assert.AreEqual("Hello, world!", ControlTree.Three.Text);
            Assert.AreEqual("Hello, world!", ControlTree.Three2.Text);
            Assert.AreEqual("Hello, world!", ControlTree.DataTemplate.Text);
        }
        public void PersistentProperties_shall_be_stored_when_changed_in_UI()
        {
            PersistentPropertyControlTree ControlTree = new PersistentPropertyControlTree();
            TestValueStore TestValueStore             = (TestValueStore)ControlTree.FindResource("PersistentProperties");

            ControlTree.Three.Text           = "Hello, world!";
            ControlTree.DataTemplate.Opacity = 1;

            Assert.AreEqual("Hello, world!", ControlTree.Three.Text);
            Assert.AreEqual("Hello, world!", TestValueStore["One.Two.Three.Text"]);

            Assert.AreEqual(1, ControlTree.DataTemplate.Opacity);
            Assert.AreEqual(1d, TestValueStore["One.Two.ThreeTemplated.Opacity"]);
        }
        public void PersistentProperties_shall_work_also_with_bound_context_ids()
        {
            PersistentPropertyControlTree ControlTree = new PersistentPropertyControlTree();
            TestValueStore TestValueStore             = (TestValueStore)ControlTree.FindResource("PersistentProperties");

            TestValueStore["One.Bound.Three.Text"]             = "Hello, binding!";
            TestValueStore["One.Bound.ThreeTemplated.Opacity"] = 1;

            Binding Binding = new Binding("Value");

            Binding.Mode   = BindingMode.OneWay;
            Binding.Source = new Values("Bound");
            ControlTree.Two.SetBinding(PersistentProperty.IdProperty, Binding);

            Assert.AreEqual("Hello, binding!", ControlTree.Three.Text);
            Assert.AreEqual(1, ControlTree.DataTemplate.Opacity);
        }
示例#6
0
 private static DependencyObject Find(DependencyObject item, string name)
 {
     for (int Index = 0; Index < VisualTreeHelper.GetChildrenCount(item); Index++)
     {
         DependencyObject Child = VisualTreeHelper.GetChild(item, Index);
         if (Child is FrameworkElement)
         {
             if (((FrameworkElement)Child).Name == name)
             {
                 return(Child);
             }
         }
         DependencyObject Descendant = PersistentPropertyControlTree.Find(Child, name);
         if (Descendant != null)
         {
             return(Descendant);
         }
     }
     return(null);
 }