public void VerifyDefaultBreadcrumb()
        {
            BreadcrumbBar breadcrumb = null;

            RunOnUIThread.Execute(() =>
            {
                breadcrumb     = new BreadcrumbBar();
                var stackPanel = new StackPanel();
                stackPanel.Children.Add(breadcrumb);

                Content = stackPanel;
                Content.UpdateLayout();
            });

            IdleSynchronizer.Wait();

            RunOnUIThread.Execute(() =>
            {
                ItemsRepeater breadcrumbItemsRepeater = (ItemsRepeater)breadcrumb.FindVisualChildByName("PART_ItemsRepeater");
                Verify.IsNotNull(breadcrumbItemsRepeater, "The underlying items repeater could not be retrieved");

                var breadcrumbNode1 = breadcrumbItemsRepeater.TryGetElement(1);
                Verify.IsNull(breadcrumbNode1, "There should be no items.");
            });
        }
예제 #2
0
        /// <summary>
        /// Gets a list of FolderItems that are the subfolders of the specified BreadcrumbItem.
        /// </summary>
        private static List <FolderItem> GetFolderItemsFromBreadcrumb(BreadcrumbItem item)
        {
            BreadcrumbBar bar   = item.BreadcrumbBar;
            string        path  = bar.PathFromBreadcrumbItem(item);
            string        trace = item.TraceValue;

            string[] subFolders;
            if (trace.Equals("Computer"))
            {
                subFolders = GetDrives(bar.SeparatorString).ToArray();
            }
            else
            {
                try
                {
                    subFolders = (from dir in System.IO.Directory.GetDirectories(path + "\\") select System.IO.Path.GetFileName(dir)).ToArray();
                }
                catch
                {
                    //maybe we don't have access!
                    subFolders = new string[] { };
                }
            }
            List <FolderItem> folderItems = (from folder in subFolders orderby folder select new FolderItem {
                Folder = folder
            }).ToList();

            return(folderItems);
        }
예제 #3
0
        /// <summary>
        /// Populate the Items of the specified BreadcrumbItem with the sub folders if necassary.
        /// </summary>
        /// <param name="item"></param>
        private static void PopulateFolders(BreadcrumbItem item)
        {
            BreadcrumbBar bar   = item.BreadcrumbBar;
            string        path  = bar.PathFromBreadcrumbItem(item);
            string        trace = item.TraceValue;

            if (trace.Equals("Computer"))
            {
                string[] dirs = System.IO.Directory.GetLogicalDrives();
                foreach (string s in dirs)
                {
                    //string dir = s;
                    //if (s.EndsWith(bar.SeparatorString)) dir = s.Remove(s.Length - bar.SeparatorString.Length, bar.SeparatorString.Length);
                    //FolderItem fi = new FolderItem();
                    //fi.Folder = dir;

                    //item.Items.Add(fi);
                }
            }
            else
            {
                try
                {
                    if (item.Data is SessionItemViewModel)
                    {
                        foreach (var row in (item.Data as SessionItemViewModel).Children)
                        {
                            item.Items.Add(row as SessionItemViewModel);
                        }
                    }
                }
                catch { }
            }
        }
예제 #4
0
        protected override void OnMouseUp(MouseButtonEventArgs e)
        {
            FrameEx.AllowNavigateOnChangeSet = true; // set true to give message regarding changeset when click on button
            BreadcrumbBar bar = LayoutHelper.FindParentObject <BreadcrumbBar>(this);

            if (bar != null && bar.TargetFrame != null)
            {
                IRibbonPage page = bar.TargetFrame.Content as IRibbonPage;
                if (page != null && page.CanSave() && FrameEx.AllowNavigateOnChangeSet)
                {
                    if (CommonMethods.ShowMessageOnNavigated(page))
                    {
                        e.Handled = true;
                        return;
                    }
                    FrameEx.AllowNavigateOnChangeSet = false;
                }
            }

            e.Handled = true;
            if (isPressed)
            {
                RoutedEventArgs args = new RoutedEventArgs(BreadcrumbButton.ClickEvent);
                RaiseEvent(args);
                selectCommand.Execute(null, this);
            }
            IsPressed = isPressed = false;
            base.OnMouseUp(e);
        }
예제 #5
0
        public void ApplyBinding()
        {
            object dataContext = base.DataContext;

            if (dataContext != null)
            {
                DataTemplate         dataTemplate           = this.HeaderTemplate;
                DataTemplateSelector headerTemplateSelector = this.HeaderTemplateSelector;
                if (headerTemplateSelector != null)
                {
                    dataTemplate = headerTemplateSelector.SelectTemplate(dataContext, this);
                }
                if (dataTemplate == null)
                {
                    DataTemplateKey resourceKey = BreadcrumbItem.GetResourceKey(dataContext);
                    if (resourceKey != null)
                    {
                        dataTemplate = (base.TryFindResource(resourceKey) as DataTemplate);
                    }
                }
                this.SelectedItem = null;
                HierarchicalDataTemplate hierarchicalDataTemplate = dataTemplate as HierarchicalDataTemplate;
                if (dataTemplate != null)
                {
                    this.Header = dataTemplate.LoadContent();
                }
                else
                {
                    this.Header = dataContext;
                }
                this.DataContext = dataContext;
                if (hierarchicalDataTemplate != null)
                {
                    this.SetBinding(ItemsControl.ItemsSourceProperty, hierarchicalDataTemplate.ItemsSource);
                }
                BreadcrumbBar breadcrumbBar = this.BreadcrumbBar;
                if (breadcrumbBar != null)
                {
                    if (this.TraceBinding == null)
                    {
                        this.TraceBinding = breadcrumbBar.TraceBinding;
                    }
                    if (this.ImageBinding == null)
                    {
                        this.ImageBinding = breadcrumbBar.ImageBinding;
                    }
                }
                if (this.TraceBinding != null)
                {
                    this.SetBinding(BreadcrumbItem.TraceProperty, this.TraceBinding);
                }
                if (this.ImageBinding != null)
                {
                    this.SetBinding(BreadcrumbItem.ImageProperty, this.ImageBinding);
                }
                this.ApplyProperties(dataContext);
            }
        }
예제 #6
0
        public ExplorerBarView()
        {
            this.InitializeComponent();

            this.Find <Button>("btnBreadAnimate").Click += RefreshClick;
            _breadcrumbBar = this.Find <BreadcrumbBar>("breadcrumb");

            _breadcrumbBar.PopulateItems += BreadcrumbBar_PopulateItems;
        }
        public void VerifyObjectItemsSource()
        {
            BreadcrumbBar breadcrumb = null;

            RunOnUIThread.Execute(() =>
            {
                // Set a custom ItemTemplate to be wrapped in a BreadcrumbBarItem.
                var itemTemplate = (DataTemplate)XamlReader.Load(
                    @"<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
                            xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
                            xmlns:controls='using:Microsoft.UI.Xaml.Controls'
                            xmlns:local='using:Windows.UI.Xaml.Tests.MUXControls.ApiTests'>
                            <controls:BreadcrumbBarItem Content='{Binding}'>
                                <controls:BreadcrumbBarItem.ContentTemplate>
                                    <DataTemplate>
                                        <TextBlock Text='{Binding MockProperty}'/>
                                    </DataTemplate>
                                </controls:BreadcrumbBarItem.ContentTemplate>
                            </controls:BreadcrumbBarItem>
                        </DataTemplate>");


                breadcrumb             = new BreadcrumbBar();
                breadcrumb.ItemsSource = new List <MockClass>()
                {
                    new MockClass {
                        MockProperty = "Node 1"
                    },
                    new MockClass {
                        MockProperty = "Node 2"
                    },
                };
                breadcrumb.ItemTemplate = itemTemplate;

                var stackPanel = new StackPanel();
                stackPanel.Children.Add(breadcrumb);

                Content = stackPanel;
                Content.UpdateLayout();
            });

            IdleSynchronizer.Wait();

            RunOnUIThread.Execute(() =>
            {
                ItemsRepeater breadcrumbItemsRepeater = (ItemsRepeater)breadcrumb.FindVisualChildByName("PART_ItemsRepeater");
                Verify.IsNotNull(breadcrumbItemsRepeater, "The underlying items repeater could not be retrieved");

                var breadcrumbNode1 = breadcrumbItemsRepeater.TryGetElement(1) as BreadcrumbBarItem;
                Verify.IsNotNull(breadcrumbNode1, "Our custom ItemTemplate should have been wrapped in a BreadcrumbBarItem.");
            });
        }
        public void VerifyNumericItemsSource()
        {
            BreadcrumbBar breadcrumb  = null;
            BreadcrumbBar breadcrumb2 = null;

            RunOnUIThread.Execute(() =>
            {
                // Set a custom ItemTemplate to be wrapped in a BreadcrumbBarItem.
                var itemTemplate = (DataTemplate)XamlReader.Load(
                    @"<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
                            <TextBlock Text='{Binding}'/>
                        </DataTemplate>");

                breadcrumb             = new BreadcrumbBar();
                breadcrumb.ItemsSource = new List <int>()
                {
                    1, 2
                };
                breadcrumb.ItemTemplate = itemTemplate;

                breadcrumb2             = new BreadcrumbBar();
                breadcrumb2.ItemsSource = new List <float>()
                {
                    1.4f, 4.5f
                };
                breadcrumb2.ItemTemplate = itemTemplate;

                var stackPanel = new StackPanel();
                stackPanel.Children.Add(breadcrumb);
                stackPanel.Children.Add(breadcrumb2);

                Content = stackPanel;
                Content.UpdateLayout();
            });

            IdleSynchronizer.Wait();

            RunOnUIThread.Execute(() =>
            {
                ItemsRepeater breadcrumbItemsRepeater = (ItemsRepeater)breadcrumb.FindVisualChildByName("PART_ItemsRepeater");
                Verify.IsNotNull(breadcrumbItemsRepeater, "The underlying items repeater could not be retrieved");

                ItemsRepeater breadcrumbItemsRepeater2 = (ItemsRepeater)breadcrumb2.FindVisualChildByName("PART_ItemsRepeater");
                Verify.IsNotNull(breadcrumbItemsRepeater2, "The underlying items repeater could not be retrieved");

                var breadcrumbNode1 = breadcrumbItemsRepeater.TryGetElement(1) as BreadcrumbBarItem;
                var breadcrumbNode2 = breadcrumbItemsRepeater2.TryGetElement(1) as BreadcrumbBarItem;
                Verify.IsNotNull(breadcrumbNode1, "Our custom ItemTemplate should have been wrapped in a BreadcrumbBarItem.");
                Verify.IsNotNull(breadcrumbNode2, "Our custom ItemTemplate should have been wrapped in a BreadcrumbBarItem.");
            });
        }
        public void VerifyBreadcrumbDefaultAPIValues()
        {
            RunOnUIThread.Execute(() =>
            {
                BreadcrumbBar breadcrumb = new BreadcrumbBar();
                var stackPanel           = new StackPanel();
                stackPanel.Children.Add(breadcrumb);

                Content = stackPanel;
                Content.UpdateLayout();

                Verify.IsNull(breadcrumb.ItemsSource, "The default ItemsSource property value must be null");
                Verify.IsNull(breadcrumb.ItemTemplate, "The default ItemTemplate property value must be null");
            });
        }
예제 #10
0
        public Control_Files(TreeView _tree, BreadcrumbBar _bar)
        {
            m_tree         = _tree;
            m_breadcrumbar = _bar;

            m_control.PopulateTreeView(
                m_tree,
                m_control.GetRelativePaths(
                    Directory.GetFiles(
                        Directory.GetCurrentDirectory()
                        + "\\Assets"),
                    Directory.GetCurrentDirectory())
                , '\\');

            m_breadcrumbar.ItemsSource = Directory.GetFiles(
                Directory.GetCurrentDirectory()
                + "\\Assets");
        }
예제 #11
0
        /// <summary>
        /// Focus this BreadcrumbButton if the focus is currently within the BreadcrumbBar where this BreadcrumbButton is embedded:
        /// </summary>
        protected override void OnMouseEnter(MouseEventArgs e)
        {
            isPressed = e.LeftButton == MouseButtonState.Pressed;
            FrameworkElement parent = TemplatedParent as FrameworkElement;

            while (parent != null && !(parent is BreadcrumbBar))
            {
                parent = VisualTreeHelper.GetParent(parent) as FrameworkElement;
            }
            BreadcrumbBar bar = parent as BreadcrumbBar;

            if (bar != null && bar.IsKeyboardFocusWithin)
            {
                Focus();
            }
            IsPressed = isPressed;
            base.OnMouseEnter(e);
        }
예제 #12
0
        void item_Click(object sender, RoutedEventArgs e)
        {
            MenuItem item     = e.Source as MenuItem;
            object   dataItem = item.DataContext;
            //RemoveSelectedItem(dataItem);
            //SelectedItem = dataItem;
            FrameworkElement parent = TemplatedParent as FrameworkElement;

            while (parent != null && !(parent is BreadcrumbBar))
            {
                parent = VisualTreeHelper.GetParent(parent) as FrameworkElement;
            }
            BreadcrumbBar bar = parent as BreadcrumbBar;

            if (bar != null)
            {
                bar.Path = (dataItem as ShellItem).ParsingName;
            }
        }
예제 #13
0
        private static string GetPathFromBreadcrumbBar(BreadcrumbBar selectedBar, string sourcePath)
        {
            var list         = new List <string>();
            var selectedItem = selectedBar.SelectedBreadcrumb;

            while (selectedItem != null)
            {
                var p = selectedItem.TraceValue;
                list.Add(p);
                selectedItem = selectedItem.ParentBreadcrumbItem;
            }
            if (list.Count == 0)
            {
                return(sourcePath);
            }
            list.RemoveAt(list.Count - 1);
            list.Add(sourcePath);
            list.Reverse();
            return(Path.Combine(list.ToArray()));
        }
예제 #14
0
        /// <summary>
        /// Populate the Items of the specified BreadcrumbItem with the sub folders if necassary.
        /// </summary>
        /// <param name="item"></param>
        private static void PopulateFolders(BreadcrumbItem item)
        {
            BreadcrumbBar bar   = item.BreadcrumbBar;
            string        path  = bar.PathFromBreadcrumbItem(item);
            string        trace = item.TraceValue;

            if (trace.Equals("Computer"))
            {
                string[] dirs = System.IO.Directory.GetLogicalDrives();
                foreach (string s in dirs)
                {
                    string dir = s;
                    if (s.EndsWith(bar.SeparatorString))
                    {
                        dir = s.Remove(s.Length - bar.SeparatorString.Length, bar.SeparatorString.Length);
                    }
                    FolderItem fi = new FolderItem();
                    fi.Folder = dir;

                    item.Items.Add(fi);
                }
            }
            else
            {
                try
                {
                    string[] paths = System.IO.Directory.GetDirectories(path + "\\");
                    foreach (string s in paths)
                    {
                        string     file = System.IO.Path.GetFileName(s);
                        FolderItem fi   = new FolderItem();
                        fi.Folder = file;
                        item.Items.Add(fi);
                    }
                }
                catch { }
            }
        }
예제 #15
0
        void item_Click(object sender, RoutedEventArgs e)
        {
            BreadcrumbBar bar = LayoutHelper.FindParentObject <BreadcrumbBar>(this);

            if (bar != null && bar.TargetFrame != null)
            {
                IRibbonPage ribbonpage = bar.TargetFrame.Content as IRibbonPage;
                if (ribbonpage != null && ribbonpage.CanSave() && FrameEx.AllowNavigateOnChangeSet)
                {
                    if (CommonMethods.ShowMessageOnNavigated(ribbonpage))
                    {
                        return;
                    }
                    FrameEx.AllowNavigateOnChangeSet = false;
                }
            }

            MenuItem item     = e.Source as MenuItem;
            object   dataItem = item.DataContext;

            RemoveSelectedItem(dataItem);
            SelectedItem = dataItem;
        }
예제 #16
0
        private void SelectCommandExecuted(object sender, ExecutedRoutedEventArgs e)
        {
            BreadcrumbBar bar = LayoutHelper.FindParentObject <BreadcrumbBar>(this);

            if (bar != null && bar.TargetFrame != null)
            {
                IRibbonPage page = bar.TargetFrame.Content as IRibbonPage;
                if (page != null && page.CanSave() && FrameEx.AllowNavigateOnChangeSet)
                {
                    if (CommonMethods.ShowMessageOnNavigated(page))
                    {
                        e.Handled = true;
                        return;
                    }
                    FrameEx.AllowNavigateOnChangeSet = false;
                }
            }

            SelectedItem = null;
            RoutedEventArgs args = new RoutedEventArgs(Button.ClickEvent);

            RaiseEvent(args);
        }
예제 #17
0
        public void VerifyDropdownItemTemplateWithNoControl()
        {
            BreadcrumbBar breadcrumb = null;

            RunOnUIThread.Execute(() =>
            {
                breadcrumb             = new BreadcrumbBar();
                breadcrumb.ItemsSource = new List <string>()
                {
                    "Node 1", "Node 2"
                };

                // Set a custom ItemTemplate to be wrapped in a BreadcrumbBarItem.
                var itemTemplate = (DataTemplate)XamlReader.Load(
                    @"<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
                            <TextBlock Text='{Binding}'/>
                        </DataTemplate>");

                breadcrumb.ItemTemplate = itemTemplate;

                var stackPanel   = new StackPanel();
                stackPanel.Width = 60;
                stackPanel.Children.Add(breadcrumb);

                Content = stackPanel;
                Content.UpdateLayout();
            });

            IdleSynchronizer.Wait();

            Button ellipsisButton = null;

            RunOnUIThread.Execute(() =>
            {
                ItemsRepeater breadcrumbItemsRepeater = (ItemsRepeater)breadcrumb.FindVisualChildByName("PART_ItemsRepeater");
                Verify.IsNotNull(breadcrumbItemsRepeater, "The underlying items repeater (1) could not be retrieved");

                var breadcrumbNode1 = breadcrumbItemsRepeater.TryGetElement(0) as BreadcrumbBarItem;
                Verify.IsNotNull(breadcrumbNode1, "Our custom ItemTemplate (1) should have been wrapped in a BreadcrumbBarItem.");

                ellipsisButton = (Button)breadcrumbNode1.FindVisualChildByName("PART_ItemButton");
                Verify.IsNotNull(ellipsisButton, "The ellipsis item (1) could not be retrieved");

                var automationPeer    = new ButtonAutomationPeer(ellipsisButton);
                var invokationPattern = automationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                invokationPattern?.Invoke();
            });

            IdleSynchronizer.Wait();

            RunOnUIThread.Execute(() =>
            {
                Flyout ellipsisFlyout = (Flyout)ellipsisButton.Flyout;
                Verify.IsNotNull(ellipsisButton, "The ellipsis flyout (1) could not be retrieved");

                ItemsRepeater ellipsisItemsRepeater = (ItemsRepeater)ellipsisFlyout.Content;
                Verify.IsNotNull(ellipsisItemsRepeater, "The underlying flyout items repeater (1) could not be retrieved");

                ellipsisItemsRepeater.Loaded += (object sender, RoutedEventArgs e) => {
                    TextBlock ellipsisNode1 = ellipsisItemsRepeater.TryGetElement(0) as TextBlock;
                    Verify.IsNotNull(ellipsisNode1, "Our flyout ItemTemplate (1) should have been wrapped in a TextBlock.");

                    // change this conditions
                    bool testCondition = !(ellipsisNode1.Foreground is SolidColorBrush brush && brush.Color == Colors.Blue);
                    Verify.IsTrue(testCondition, "Default foreground color of the BreadcrumbBarItem should not have been [blue].");
                };
            });
        }
        public void VerifyDropdownItemTemplateWithNoControl()
        {
            BreadcrumbBar breadcrumb = null;

            RunOnUIThread.Execute(() =>
            {
                breadcrumb             = new BreadcrumbBar();
                breadcrumb.ItemsSource = new List <string>()
                {
                    "Node 1", "Node 2"
                };

                // Set a custom ItemTemplate to be wrapped in a BreadcrumbBarItem.
                var itemTemplate = (DataTemplate)XamlReader.Load(
                    @"<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
                            <TextBlock Text='{Binding}'/>
                        </DataTemplate>");

                breadcrumb.ItemTemplate = itemTemplate;

                var stackPanel   = new StackPanel();
                stackPanel.Width = 60;
                stackPanel.Children.Add(breadcrumb);

                Content = stackPanel;
                Content.UpdateLayout();
            });

            IdleSynchronizer.Wait();

            Button ellipsisButton = null;

            RunOnUIThread.Execute(() =>
            {
                ItemsRepeater breadcrumbItemsRepeater = (ItemsRepeater)breadcrumb.FindVisualChildByName("PART_ItemsRepeater");
                Verify.IsNotNull(breadcrumbItemsRepeater, "The underlying items repeater (1) could not be retrieved");

                var breadcrumbNode1 = breadcrumbItemsRepeater.TryGetElement(0) as BreadcrumbBarItem;
                Verify.IsNotNull(breadcrumbNode1, "Our custom ItemTemplate (1) should have been wrapped in a BreadcrumbBarItem.");

                ellipsisButton = (Button)breadcrumbNode1.FindVisualChildByName("PART_ItemButton");
                Verify.IsNotNull(ellipsisButton, "The ellipsis item (1) could not be retrieved");

                var automationPeer    = new ButtonAutomationPeer(ellipsisButton);
                var invokationPattern = automationPeer.GetPattern(PatternInterface.Invoke) as IInvokeProvider;
                invokationPattern?.Invoke();
            });

            // GetOpenPopups returns empty list in RS3. The scenario works, this just seems to be a
            // test/infra issue in RS3, so filtering it out for now.
            if (PlatformConfiguration.IsOsVersionGreaterThan(OSVersion.Redstone3))
            {
                IdleSynchronizer.Wait();

                RunOnUIThread.Execute(() =>
                {
                    var flyout = VisualTreeHelper.GetOpenPopups(Window.Current).Last();
                    Verify.IsNotNull(flyout, "Flyout could not be retrieved");
                    var ellipsisItemsRepeater = TestUtilities.FindDescendents <ItemsRepeater>(flyout).Single();
                    Verify.IsNotNull(ellipsisItemsRepeater, "The underlying flyout items repeater (1) could not be retrieved");

                    ellipsisItemsRepeater.Loaded += (object sender, RoutedEventArgs e) =>
                    {
                        TextBlock ellipsisNode1 = ellipsisItemsRepeater.TryGetElement(0) as TextBlock;
                        Verify.IsNotNull(ellipsisNode1, "Our flyout ItemTemplate (1) should have been wrapped in a TextBlock.");

                        // change this conditions
                        bool testCondition = !(ellipsisNode1.Foreground is SolidColorBrush brush && brush.Color == Colors.Blue);
                        Verify.IsTrue(testCondition, "Default foreground color of the BreadcrumbBarItem should not have been [blue].");
                    };
                });
            }
        }
예제 #19
0
        /// <summary>
        ///  Appies the binding to the breadcrumb item.
        /// </summary>
        public void ApplyBinding()
        {
            object item = DataContext;

            if (item == null)
            {
                return;
            }

            BreadcrumbItem       root             = this;
            DataTemplate         template         = HeaderTemplate;
            DataTemplateSelector templateSelector = HeaderTemplateSelector;

            if (templateSelector != null)
            {
                template = templateSelector.SelectTemplate(item, root);
            }
            if (template == null)
            {
                DataTemplateKey key = GetResourceKey(item);
                if (key != null)
                {
                    template = TryFindResource(key) as DataTemplate;
                }
            }

            root.SelectedItem = null;

            HierarchicalDataTemplate hdt = template as HierarchicalDataTemplate;

            if (template != null)
            {
                root.Header = template.LoadContent();
            }
            else
            {
                root.Header = item;
            }
            root.DataContext = item;

            if (hdt != null)
            {
                // bind the Items to the hierarchical data template:
                root.SetBinding(BreadcrumbItem.ItemsSourceProperty, hdt.ItemsSource);
            }

            BreadcrumbBar bar = BreadcrumbBar;

            if (bar != null)
            {
                if (TraceBinding == null)
                {
                    TraceBinding = bar.TraceBinding;
                }
                if (ImageBinding == null)
                {
                    ImageBinding = bar.ImageBinding;
                }
            }

            if (TraceBinding != null)
            {
                root.SetBinding(BreadcrumbItem.TraceProperty, TraceBinding);
            }
            if (ImageBinding != null)
            {
                root.SetBinding(BreadcrumbItem.ImageProperty, ImageBinding);
            }


            ApplyProperties(item);
        }
예제 #20
0
        public void VerifyCustomItemTemplate()
        {
            BreadcrumbBar breadcrumb  = null;
            BreadcrumbBar breadcrumb2 = null;

            RunOnUIThread.Execute(() =>
            {
                breadcrumb             = new BreadcrumbBar();
                breadcrumb.ItemsSource = new List <string>()
                {
                    "Node 1", "Node 2"
                };

                // Set a custom ItemTemplate to be wrapped in a BreadcrumbBarItem.
                var itemTemplate = (DataTemplate)XamlReader.Load(
                    @"<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>
                            <TextBlock Text='{Binding}'/>
                        </DataTemplate>");

                breadcrumb.ItemTemplate = itemTemplate;

                breadcrumb2             = new BreadcrumbBar();
                breadcrumb2.ItemsSource = new List <string>()
                {
                    "Node 1", "Node 2"
                };

                // Set a custom ItemTemplate which is already a BreadcrumbBarItem. No wrapping should be performed.
                var itemTemplate2 = (DataTemplate)XamlReader.Load(
                    @"<DataTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
                            xmlns:controls='using:Microsoft.UI.Xaml.Controls'>
                            <controls:BreadcrumbBarItem Foreground='Blue'>
                              <TextBlock Text = '{Binding}'/>
                            </controls:BreadcrumbBarItem>
                        </DataTemplate>");

                breadcrumb2.ItemTemplate = itemTemplate2;

                var stackPanel = new StackPanel();
                stackPanel.Children.Add(breadcrumb);
                stackPanel.Children.Add(breadcrumb2);

                Content = stackPanel;
                Content.UpdateLayout();
            });

            IdleSynchronizer.Wait();

            RunOnUIThread.Execute(() =>
            {
                ItemsRepeater breadcrumbItemsRepeater  = (ItemsRepeater)breadcrumb.FindVisualChildByName("PART_ItemsRepeater");
                ItemsRepeater breadcrumbItemsRepeater2 = (ItemsRepeater)breadcrumb2.FindVisualChildByName("PART_ItemsRepeater");
                Verify.IsNotNull(breadcrumbItemsRepeater, "The underlying items repeater could not be retrieved");
                Verify.IsNotNull(breadcrumbItemsRepeater2, "The underlying items repeater could not be retrieved");

                var breadcrumbNode1 = breadcrumbItemsRepeater.TryGetElement(1) as BreadcrumbBarItem;
                var breadcrumbNode2 = breadcrumbItemsRepeater2.TryGetElement(1) as BreadcrumbBarItem;
                Verify.IsNotNull(breadcrumbNode1, "Our custom ItemTemplate should have been wrapped in a BreadcrumbBarItem.");
                Verify.IsNotNull(breadcrumbNode2, "Our custom ItemTemplate should have been wrapped in a BreadcrumbBarItem.");

                // change this conditions
                bool testCondition = !(breadcrumbNode1.Foreground is SolidColorBrush brush && brush.Color == Colors.Blue);
                Verify.IsTrue(testCondition, "Default foreground color of the BreadcrumbBarItem should not have been [blue].");

                testCondition = breadcrumbNode2.Foreground is SolidColorBrush brush2 && brush2.Color == Colors.Blue;
                Verify.IsTrue(testCondition, "The foreground color of the BreadcrumbBarItem should have been [blue].");
            });
        }