|
30 | 30 | using TreeViewList = Microsoft.UI.Xaml.Controls.TreeViewList;
|
31 | 31 | using TreeViewNode = Microsoft.UI.Xaml.Controls.TreeViewNode;
|
32 | 32 | using TreeViewSelectionMode = Microsoft.UI.Xaml.Controls.TreeViewSelectionMode;
|
| 33 | +using TreeViewSelectionChangedEventArgs = Microsoft.UI.Xaml.Controls.TreeViewSelectionChangedEventArgs; |
33 | 34 |
|
34 | 35 | namespace Windows.UI.Xaml.Tests.MUXControls.ApiTests
|
35 | 36 | {
|
@@ -501,6 +502,171 @@ public void VerifyVisualTree()
|
501 | 502 | VisualTreeTestHelper.VerifyVisualTree(root: treeView, masterFilePrefix: "TreeView");
|
502 | 503 | }
|
503 | 504 |
|
| 505 | + [TestMethod] |
| 506 | + public void TreeViewSelectionChangedSingleMode() |
| 507 | + { |
| 508 | + RunOnUIThread.Execute(() => |
| 509 | + { |
| 510 | + // input data: |
| 511 | + // - 1 |
| 512 | + // - 2 |
| 513 | + // - 3 |
| 514 | + TreeViewSelectionChangedEventArgs selectionChangedEventArgs = null; |
| 515 | + |
| 516 | + var treeView = new TreeView { SelectionMode = TreeViewSelectionMode.Single }; |
| 517 | + treeView.SelectionChanged += (s, e1) => selectionChangedEventArgs = e1; |
| 518 | + |
| 519 | + var collection = new ObservableCollection<int> { 1, 2, 3 }; |
| 520 | + treeView.ItemsSource = collection; |
| 521 | + Content = treeView; |
| 522 | + Content.UpdateLayout(); |
| 523 | + var tvi1 = (TreeViewItem)treeView.ContainerFromItem(1); |
| 524 | + var tvi2 = (TreeViewItem)treeView.ContainerFromItem(2); |
| 525 | + |
| 526 | + tvi1.IsSelected = true; |
| 527 | + |
| 528 | + Verify.IsNotNull(selectionChangedEventArgs); |
| 529 | + Verify.AreEqual(1, selectionChangedEventArgs.AddedItems.Count); |
| 530 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(1)); |
| 531 | + Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count); |
| 532 | + selectionChangedEventArgs = null; |
| 533 | + |
| 534 | + tvi2.IsSelected = true; |
| 535 | + |
| 536 | + Verify.IsNotNull(selectionChangedEventArgs); |
| 537 | + Verify.AreEqual(1, selectionChangedEventArgs.AddedItems.Count); |
| 538 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(2)); |
| 539 | + Verify.AreEqual(1, selectionChangedEventArgs.RemovedItems.Count); |
| 540 | + Verify.IsTrue(selectionChangedEventArgs.RemovedItems.Contains(1)); |
| 541 | + selectionChangedEventArgs = null; |
| 542 | + |
| 543 | + tvi2.IsSelected = false; |
| 544 | + |
| 545 | + Verify.IsNotNull(selectionChangedEventArgs); |
| 546 | + Verify.AreEqual(0, selectionChangedEventArgs.AddedItems.Count); |
| 547 | + Verify.AreEqual(1, selectionChangedEventArgs.RemovedItems.Count); |
| 548 | + Verify.IsTrue(selectionChangedEventArgs.RemovedItems.Contains(2)); |
| 549 | + selectionChangedEventArgs = null; |
| 550 | + |
| 551 | + tvi1.IsSelected = true; |
| 552 | + |
| 553 | + Verify.IsNotNull(selectionChangedEventArgs); |
| 554 | + Verify.AreEqual(1, selectionChangedEventArgs.AddedItems.Count); |
| 555 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(1)); |
| 556 | + Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count); |
| 557 | + selectionChangedEventArgs = null; |
| 558 | + |
| 559 | + treeView.ItemsSource = null; |
| 560 | + |
| 561 | + Verify.IsNotNull(selectionChangedEventArgs); |
| 562 | + Verify.AreEqual(0, selectionChangedEventArgs.AddedItems.Count); |
| 563 | + Verify.AreEqual(1, selectionChangedEventArgs.RemovedItems.Count); |
| 564 | + Verify.IsTrue(selectionChangedEventArgs.RemovedItems.Contains(1)); |
| 565 | + }); |
| 566 | + } |
| 567 | + |
| 568 | + [TestMethod] |
| 569 | + public void TreeViewSelectionChangedMultipleMode() |
| 570 | + { |
| 571 | + RunOnUIThread.Execute(() => |
| 572 | + { |
| 573 | + // input data: |
| 574 | + // - 1 |
| 575 | + // - 11 |
| 576 | + // - 12 |
| 577 | + // - 13 |
| 578 | + // - 2 |
| 579 | + // - 21 |
| 580 | + // - 3 |
| 581 | + TreeViewSelectionChangedEventArgs selectionChangedEventArgs = null; |
| 582 | + |
| 583 | + var treeView = new TreeView { SelectionMode = TreeViewSelectionMode.Multiple }; |
| 584 | + treeView.SelectionChanged += (s, e) => selectionChangedEventArgs = e; |
| 585 | + |
| 586 | + var node1 = new TreeViewNode { Content = "1", IsExpanded = true }; |
| 587 | + var node11 = new TreeViewNode { Content = "11" }; |
| 588 | + var node12 = new TreeViewNode { Content = "12" }; |
| 589 | + var node13 = new TreeViewNode { Content = "13" }; |
| 590 | + node1.Children.Add(node11); |
| 591 | + node1.Children.Add(node12); |
| 592 | + node1.Children.Add(node13); |
| 593 | + |
| 594 | + var node2 = new TreeViewNode { Content = "2", IsExpanded = true }; |
| 595 | + var node21 = new TreeViewNode { Content = "21" }; |
| 596 | + node2.Children.Add(node21); |
| 597 | + |
| 598 | + var node3 = new TreeViewNode { Content = "3" }; |
| 599 | + |
| 600 | + treeView.RootNodes.Add(node1); |
| 601 | + treeView.RootNodes.Add(node2); |
| 602 | + treeView.RootNodes.Add(node3); |
| 603 | + Content = treeView; |
| 604 | + Content.UpdateLayout(); |
| 605 | + |
| 606 | + var tvi1 = (TreeViewItem)treeView.ContainerFromItem(node1); |
| 607 | + var tvi11 = (TreeViewItem)treeView.ContainerFromItem(node11); |
| 608 | + var tvi12 = (TreeViewItem)treeView.ContainerFromItem(node12); |
| 609 | + var tvi13 = (TreeViewItem)treeView.ContainerFromItem(node13); |
| 610 | + var tvi2 = (TreeViewItem)treeView.ContainerFromItem(node2); |
| 611 | + var tvi21 = (TreeViewItem)treeView.ContainerFromItem(node21); |
| 612 | + var tvi3 = (TreeViewItem)treeView.ContainerFromItem(node3); |
| 613 | + |
| 614 | + // - 1 selected |
| 615 | + // - 11 selected |
| 616 | + // - 12 selected |
| 617 | + // - 13 selected |
| 618 | + // - 2 |
| 619 | + // - 21 |
| 620 | + // - 3 |
| 621 | + tvi1.IsSelected = true; |
| 622 | + |
| 623 | + Verify.IsNotNull(selectionChangedEventArgs); |
| 624 | + Verify.AreEqual(4, selectionChangedEventArgs.AddedItems.Count); |
| 625 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1)); |
| 626 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11)); |
| 627 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12)); |
| 628 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13)); |
| 629 | + Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count); |
| 630 | + selectionChangedEventArgs = null; |
| 631 | + |
| 632 | + // - 1 selected |
| 633 | + // - 11 |
| 634 | + // - 12 selected |
| 635 | + // - 13 selected |
| 636 | + // - 2 |
| 637 | + // - 21 |
| 638 | + // - 3 |
| 639 | + tvi11.IsSelected = true; |
| 640 | + tvi11.IsSelected = false; |
| 641 | + |
| 642 | + Verify.IsNotNull(selectionChangedEventArgs); |
| 643 | + Verify.AreEqual(0, selectionChangedEventArgs.AddedItems.Count); |
| 644 | + Verify.AreEqual(1, selectionChangedEventArgs.RemovedItems.Count); |
| 645 | + Verify.IsTrue(selectionChangedEventArgs.RemovedItems.Contains(node11)); |
| 646 | + selectionChangedEventArgs = null; |
| 647 | + |
| 648 | + // - 1 selected |
| 649 | + // - 11 selected |
| 650 | + // - 12 selected |
| 651 | + // - 13 selected |
| 652 | + // - 2 selected |
| 653 | + // - 21 selected |
| 654 | + // - 3 selected |
| 655 | + treeView.SelectAll(); |
| 656 | + Verify.IsNotNull(selectionChangedEventArgs); |
| 657 | + var items = selectionChangedEventArgs.AddedItems.ToList(); |
| 658 | + Verify.AreEqual(7, selectionChangedEventArgs.AddedItems.Count); |
| 659 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node1)); |
| 660 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node11)); |
| 661 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node12)); |
| 662 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node13)); |
| 663 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node2)); |
| 664 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node21)); |
| 665 | + Verify.IsTrue(selectionChangedEventArgs.AddedItems.Contains(node3)); |
| 666 | + Verify.AreEqual(0, selectionChangedEventArgs.RemovedItems.Count); |
| 667 | + }); |
| 668 | + } |
| 669 | + |
504 | 670 | private bool IsMultiSelectCheckBoxChecked(TreeView tree, TreeViewNode node)
|
505 | 671 | {
|
506 | 672 | var treeViewItem = tree.ContainerFromNode(node) as TreeViewItem;
|
|
0 commit comments