예제 #1
0
		protected void TestGetParent (MyListBox listbox)
		{
			listbox.Width = 100;
			listbox.Height = 100;
			bool layoutUpdated = false;
			bool loaded = false;
			listbox.LayoutUpdated += (o, e) => layoutUpdated = true;
			listbox.Loaded += (o, e) => loaded = true;

			TestPanel.Children.Add (listbox);
			AutomationPeer peer = null;
			AutomationPeer peerParent = null;
			ListBoxItem item0 = null;
			ListBoxItem item1 = null;
			List<AutomationPeer> children = null;

			EnqueueConditional (() => loaded, "Loaded #0");
			Enqueue (() => {
				item0 = new ListBoxItem () { Content = "Item 0" };
				item1 = new ListBoxItem () { Content = "Item 1" };

				peer = FrameworkElementAutomationPeer.CreatePeerForElement (listbox);
				Assert.IsNotNull (peer, "CreatePeerForElement #0");
				Assert.IsNull (peer.GetChildren (), "GetChildren #1");

				listbox.Items.Add (item0);
				listbox.Items.Add (item1);

				children = peer.GetChildren ();
				Assert.IsNotNull (children, "GetChildren #2");
				Assert.AreEqual (2, children.Count, "GetChildren #3");

				if (listbox.Template == null)
					peerParent = peer;
				else {
					// When default Template is used the Parent is the ScrollViewer 
					// not the ListBox
					ScrollViewer viewer = listbox.GetScrollViewer ();
					Assert.IsNotNull (viewer, "Missing ScrollViewer");
					if (viewer != null)
						peerParent = FrameworkElementAutomationPeer.CreatePeerForElement (viewer);
				}

				Assert.AreEqual (peerParent, children[0].GetParent (), "GetParent #1");
				Assert.AreEqual (peerParent, children[1].GetParent (), "GetParent #2");

				layoutUpdated = false;
				listbox.Items.Remove (item1);
			});
			EnqueueConditional (() => layoutUpdated, "LayoutUpdated #0");
			Enqueue (() => {
				Assert.IsNull (children [1].GetParent (), "GetParent #2");
				Assert.IsNotNull (peer.GetChildren (), "GetChildren #4");
				Assert.AreEqual (1, peer.GetChildren ().Count, "GetChildren #5");
			});
			EnqueueTestComplete ();
		}
예제 #2
0
        protected void TestGetParent(MyListBox listbox)
        {
            listbox.Width  = 100;
            listbox.Height = 100;
            bool layoutUpdated = false;
            bool loaded        = false;

            listbox.LayoutUpdated += (o, e) => layoutUpdated = true;
            listbox.Loaded        += (o, e) => loaded = true;

            TestPanel.Children.Add(listbox);
            AutomationPeer        peer       = null;
            AutomationPeer        peerParent = null;
            ListBoxItem           item0      = null;
            ListBoxItem           item1      = null;
            List <AutomationPeer> children   = null;

            EnqueueConditional(() => loaded, "Loaded #0");
            Enqueue(() => {
                item0 = new ListBoxItem()
                {
                    Content = "Item 0"
                };
                item1 = new ListBoxItem()
                {
                    Content = "Item 1"
                };

                peer = FrameworkElementAutomationPeer.CreatePeerForElement(listbox);
                Assert.IsNotNull(peer, "CreatePeerForElement #0");
                Assert.IsNull(peer.GetChildren(), "GetChildren #1");

                listbox.Items.Add(item0);
                listbox.Items.Add(item1);

                children = peer.GetChildren();
                Assert.IsNotNull(children, "GetChildren #2");
                Assert.AreEqual(2, children.Count, "GetChildren #3");

                if (listbox.Template == null)
                {
                    peerParent = peer;
                }
                else
                {
                    // When default Template is used the Parent is the ScrollViewer
                    // not the ListBox
                    ScrollViewer viewer = listbox.GetScrollViewer();
                    Assert.IsNotNull(viewer, "Missing ScrollViewer");
                    if (viewer != null)
                    {
                        peerParent = FrameworkElementAutomationPeer.CreatePeerForElement(viewer);
                    }
                }

                Assert.AreEqual(peerParent, children[0].GetParent(), "GetParent #1");
                Assert.AreEqual(peerParent, children[1].GetParent(), "GetParent #2");

                layoutUpdated = false;
                listbox.Items.Remove(item1);
            });
            EnqueueConditional(() => layoutUpdated, "LayoutUpdated #0");
            Enqueue(() => {
                Assert.IsNull(children [1].GetParent(), "GetParent #2");
                Assert.IsNotNull(peer.GetChildren(), "GetChildren #4");
                Assert.AreEqual(1, peer.GetChildren().Count, "GetChildren #5");
            });
            EnqueueTestComplete();
        }