public void ResourceReferenceExpressionBaseTest() { FrameworkElement root = new FrameworkElement(); FrameworkElement child1 = new FrameworkElement(); FrameworkElement child2 = new FrameworkElement(); child1.AddVisualChild(child2); int testValueChanged = 0; child2.PropertyChanged += (sender, e) => testValueChanged += e.Property == TestValueProperty ? 1 : 0; child2.SetValue(TestValueProperty, new ResourceReferenceExpressionProvider("key1")); Assert.AreEqual("default", child2.GetValue(TestValueProperty)); Assert.AreEqual(0, testValueChanged); root.Resources = new ResourceDictionary(); root.Resources.Add("key1", "value1"); root.AddVisualChild(child1); Assert.AreEqual("value1", child2.GetValue(TestValueProperty)); Assert.AreEqual(1, testValueChanged); root.Resources.Remove("key1"); Assert.AreEqual("default", child2.GetValue(TestValueProperty)); Assert.AreEqual(2, testValueChanged); ResourceDictionary dictionary = new ResourceDictionary(); dictionary.Add("key1", "value2"); root.Resources.MergedDictionaries.Add(dictionary); Assert.AreEqual("value2", child2.GetValue(TestValueProperty)); Assert.AreEqual(3, testValueChanged); child1.Resources = new ResourceDictionary(); child1.Resources.Add("key1", "value3"); Assert.AreEqual("value3", child2.GetValue(TestValueProperty)); Assert.AreEqual(4, testValueChanged); child1.Resources.Remove("key1"); Assert.AreEqual("value2", child2.GetValue(TestValueProperty)); Assert.AreEqual(5, testValueChanged); }
public void ResourceInheritanceTest() { object value; FrameworkElement root = new FrameworkElement(); root.Resources = new ResourceDictionary(); root.Resources.Add("key1", "value1"); Assert.IsTrue(root.TryGetResource("key1", out value)); Assert.AreEqual("value1", value); FrameworkElement child1 = new FrameworkElement(); root.AddVisualChild(child1); root.AddLogicalChild(child1); Assert.IsTrue(child1.TryGetResource("key1", out value)); Assert.AreEqual("value1", value); child1.Resources = new ResourceDictionary(); child1.Resources.Add("key1", "value2"); FrameworkElement child2 = new FrameworkElement(); child1.AddVisualChild(child2); Assert.IsTrue(child2.TryGetResource("key1", out value)); Assert.AreEqual("value2", value); root.AddLogicalChild(child2); Assert.IsTrue(child2.TryGetResource("key1", out value)); Assert.AreEqual("value1", value); }