예제 #1
0
        public void Adorner_should_be_destroyed_on_unload()
        {
            var backstage = new Backstage
            {
                Content = new Button()
            };

            using (var window = new TestRibbonWindow(backstage))
            {
                Assert.That(backstage.IsLoaded, Is.True);

                Assert.That(backstage.GetFieldValue <object>("adorner"), Is.Null);

                backstage.IsOpen = true;

                Assert.That(backstage.GetFieldValue <object>("adorner"), Is.Not.Null);

                backstage.IsOpen = false;

                Assert.That(backstage.GetFieldValue <object>("adorner"), Is.Not.Null);

                window.Content = null;

                UIHelper.DoEvents();

                Assert.That(backstage.GetFieldValue <object>("adorner"), Is.Null);
            }
        }
예제 #2
0
        public void DependencyProperties_and_DataContext_should_be_inherited_from_window()
        {
            var ribbon = new Ribbon
            {
                Menu        = new Backstage(),
                StartScreen = new StartScreen()
            };

            var enUs = XmlLanguage.GetLanguage("en-US");
            var deDe = XmlLanguage.GetLanguage("de-DE");

            using (var window = new TestRibbonWindow(ribbon)
            {
                Language = deDe,
                DataContext = deDe
            })
            {
                ribbon.ApplyTemplate();

                var elemens = new Dictionary <FrameworkElement, string>
                {
                    { ribbon, "Ribbon" },
                    { ribbon.Menu, "Menu" },
                    { ribbon.StartScreen, "StartScreen" },
                    { ribbon.QuickAccessToolBar, "QuickAccessToolBar" },
                    { ribbon.TabControl, "TabControl" },
                    { (FrameworkElement)ribbon.Template.FindName("PART_LayoutRoot", ribbon), "PART_LayoutRoot" },
                };

                {
                    AssertAttElementsHaveSameValue(elemens, FrameworkElement.DataContextProperty, window);
                    AssertAttElementsHaveSameValue(elemens, FrameworkElement.LanguageProperty, window);
                }

                {
                    window.Language    = enUs;
                    window.DataContext = window.Language;

                    AssertAttElementsHaveSameValue(elemens, FrameworkElement.DataContextProperty, window);
                    AssertAttElementsHaveSameValue(elemens, FrameworkElement.LanguageProperty, window);
                }

                {
                    window.Language    = deDe;
                    window.DataContext = window.Language;

                    AssertAttElementsHaveSameValue(elemens, FrameworkElement.DataContextProperty, window);
                    AssertAttElementsHaveSameValue(elemens, FrameworkElement.LanguageProperty, window);
                }

                {
                    window.Language    = enUs;
                    window.DataContext = window.Language;

                    AssertAttElementsHaveSameValue(elemens, FrameworkElement.DataContextProperty, window);
                    AssertAttElementsHaveSameValue(elemens, FrameworkElement.LanguageProperty, window);
                }
            }
        }
예제 #3
0
 public void ChangeThemeForWindowShouldThrowArgumentNullException()
 {
     using (var window = new TestRibbonWindow())
     {
         Assert.Throws <ArgumentNullException>(() => ThemeManager.ChangeTheme((Window)null, ThemeManager.GetTheme("Light.Red")));
         Assert.Throws <ArgumentNullException>(() => ThemeManager.ChangeTheme(Application.Current.MainWindow, ThemeManager.GetTheme("UnknownTheme")));
     }
 }
예제 #4
0
        public void ChangingAppThemeChangesWindowTheme()
        {
            using (var window = new TestRibbonWindow())
            {
                var expectedTheme = ThemeManager.GetTheme("Dark.Teal");
                ThemeManager.ChangeTheme(Application.Current, expectedTheme);

                Assert.That(ThemeManager.DetectTheme(Application.Current), Is.EqualTo(expectedTheme));
                Assert.That(ThemeManager.DetectTheme(window), Is.EqualTo(expectedTheme));
            }
        }
예제 #5
0
        public void Adorner_Should_Properly_Grab_Keys_From_KeyTipInformationProvider()
        {
            {
                var splitButton = new SplitButton();
                var panel       = new Grid();
                panel.Children.Add(splitButton);
                using (var window = new TestRibbonWindow(panel))
                {
                    var adorner = new KeyTipAdorner(splitButton, panel, null);

                    Assert.That(adorner.KeyTipInformations, Has.Count.EqualTo(0));
                }
            }

            {
                var splitButton = new SplitButton
                {
                    KeyTip = "A"
                };
                var panel = new Grid();
                panel.Children.Add(splitButton);

                using (var window = new TestRibbonWindow(panel))
                {
                    var adorner = new KeyTipAdorner(splitButton, panel, null);

                    Assert.That(adorner.KeyTipInformations, Has.Count.EqualTo(2));
                    Assert.That(adorner.KeyTipInformations[0].Keys, Is.EqualTo("AA"));
                    Assert.That(adorner.KeyTipInformations[1].Keys, Is.EqualTo("AB"));
                }
            }

            {
                var splitButton = new SplitButton
                {
                    SecondaryKeyTip = "B"
                };
                var panel = new Grid();
                panel.Children.Add(splitButton);

                using (var window = new TestRibbonWindow(panel))
                {
                    var adorner = new KeyTipAdorner(splitButton, panel, null);

                    Assert.That(adorner.KeyTipInformations, Has.Count.EqualTo(1));
                    Assert.That(adorner.KeyTipInformations[0].Keys, Is.EqualTo("B"));
                }
            }
        }
예제 #6
0
        public void ChangeBaseColorAndColorScheme()
        {
            {
                var currentTheme = ThemeManager.DetectTheme(Application.Current);

                Assert.That(currentTheme, Is.Not.Null);
                ThemeManager.ChangeTheme(Application.Current, ThemeManager.BaseColorDark, "Yellow");

                Assert.That(ThemeManager.DetectTheme(Application.Current).BaseColorScheme, Is.EqualTo(ThemeManager.BaseColorDark));
                Assert.That(ThemeManager.DetectTheme(Application.Current).ColorScheme, Is.EqualTo("Yellow"));
            }

            {
                using (var window = new TestRibbonWindow())
                {
                    var currentTheme = ThemeManager.DetectTheme(window);

                    Assert.That(currentTheme, Is.Not.Null);
                    ThemeManager.ChangeTheme(window, ThemeManager.BaseColorLight, "Green");

                    Assert.That(ThemeManager.DetectTheme(window).BaseColorScheme, Is.EqualTo(ThemeManager.BaseColorLight));
                    Assert.That(ThemeManager.DetectTheme(window).ColorScheme, Is.EqualTo("Green"));
                }
            }

            {
                var currentTheme = ThemeManager.DetectTheme(Application.Current);

                Assert.That(currentTheme, Is.Not.Null);

                var control = new Control();
                ThemeManager.ChangeTheme(control.Resources, currentTheme, ThemeManager.BaseColorDark, "Red");

                Assert.That(ThemeManager.DetectTheme(control.Resources).BaseColorScheme, Is.EqualTo(ThemeManager.BaseColorDark));
                Assert.That(ThemeManager.DetectTheme(control.Resources).ColorScheme, Is.EqualTo("Red"));
            }

            Assert.That(ThemeManager.DetectTheme(Application.Current).ColorScheme, Is.EqualTo("Yellow"));
        }
예제 #7
0
        public void ChangeBaseColor()
        {
            {
                var currentTheme = ThemeManager.DetectTheme(Application.Current);

                Assert.That(currentTheme, Is.Not.Null);
                ThemeManager.ChangeThemeBaseColor(Application.Current, ThemeManager.GetInverseTheme(currentTheme).BaseColorScheme);

                Assert.That(ThemeManager.DetectTheme(Application.Current).BaseColorScheme, Is.Not.EqualTo(currentTheme.BaseColorScheme));
                Assert.That(ThemeManager.DetectTheme(Application.Current).ColorScheme, Is.EqualTo(currentTheme.ColorScheme));
            }

            {
                using (var window = new TestRibbonWindow())
                {
                    var currentTheme = ThemeManager.DetectTheme(window);

                    Assert.That(currentTheme, Is.Not.Null);
                    ThemeManager.ChangeThemeBaseColor(window, ThemeManager.GetInverseTheme(currentTheme).BaseColorScheme);

                    Assert.That(ThemeManager.DetectTheme(window).BaseColorScheme, Is.Not.EqualTo(currentTheme.BaseColorScheme));
                    Assert.That(ThemeManager.DetectTheme(window).ColorScheme, Is.EqualTo(currentTheme.ColorScheme));
                }
            }

            {
                var currentTheme = ThemeManager.DetectTheme(Application.Current);

                Assert.That(currentTheme, Is.Not.Null);

                var control = new Control();
                ThemeManager.ChangeThemeBaseColor(control.Resources, currentTheme, ThemeManager.GetInverseTheme(currentTheme).BaseColorScheme);

                Assert.That(ThemeManager.DetectTheme(control.Resources).BaseColorScheme, Is.Not.EqualTo(currentTheme.BaseColorScheme));
                Assert.That(ThemeManager.DetectTheme(control.Resources).ColorScheme, Is.EqualTo(currentTheme.ColorScheme));
            }
        }
        public void With_Many_Tab()
        {
            var container = new RibbonTabsContainer();

            var longestTab = new RibbonTabItem {
                Header = "Longest header text"
            };
            var secondLongestTab = new RibbonTabItem {
                Header = "Header text"
            };
            var middleTab = new RibbonTabItem {
                Header = "Header"
            };
            var smallTab = new RibbonTabItem {
                Header = "Text"
            };

            container.Children.Add(longestTab);
            container.Children.Add(secondLongestTab);
            container.Children.Add(middleTab);
            container.Children.Add(smallTab);

            var childrenWidths = new[]
            {
                longestTab,
                secondLongestTab,
                middleTab,
                smallTab
            }.Select(x => x.DesiredSize.Width);

            using (var testWindow = new TestRibbonWindow(container)
            {
                Width = ReferenceWidth
            })
            {
                Assert.That(container.DesiredSize, Is.EqualTo(new Size(290, ReferenceHeight)));

                Assert.That(childrenWidths, Is.EquivalentTo(new[]
                {
                    121,
                    78,
                    54,
                    37
                }));

                container.Measure(new Size(290, ReferenceHeight));

                Assert.That(container.DesiredSize, Is.EqualTo(new Size(290, ReferenceHeight)));

                Assert.That(childrenWidths, Is.EquivalentTo(new[]
                {
                    121,
                    78,
                    54,
                    37
                }));

                container.Measure(new Size(289, ReferenceHeight));

                Assert.That(container.DesiredSize, Is.EqualTo(new Size(283, ReferenceHeight)));

                Assert.That(childrenWidths, Is.EquivalentTo(new[]
                {
                    114,
                    78,
                    54,
                    37
                }));

                container.Measure(new Size(230, ReferenceHeight));

                Assert.That(container.DesiredSize, Is.EqualTo(new Size(229, ReferenceHeight)));

                Assert.That(childrenWidths, Is.EquivalentTo(new[]
                {
                    67,
                    71,
                    54,
                    37
                }));

                container.Measure(new Size(150, ReferenceHeight));

                Assert.That(container.DesiredSize, Is.EqualTo(new Size(147, ReferenceHeight)));
                Assert.That(container.ExtentWidth, Is.EqualTo(container.ViewportWidth));

                Assert.That(childrenWidths, Is.EquivalentTo(new[]
                {
                    37,
                    33,
                    40,
                    37
                }));

                container.Measure(new Size(130, ReferenceHeight));

                Assert.That(container.DesiredSize, Is.EqualTo(new Size(126, ReferenceHeight)));
                Assert.That(container.ExtentWidth, Is.EqualTo(container.ViewportWidth));

                Assert.That(childrenWidths, Is.EquivalentTo(new[]
                {
                    30,
                    33,
                    33,
                    30
                }));

                container.Measure(new Size(120, ReferenceHeight));

                Assert.That(container.DesiredSize, Is.EqualTo(new Size(120, ReferenceHeight)));
                Assert.That(container.ExtentWidth, Is.EqualTo(121));

                Assert.That(childrenWidths, Is.EquivalentTo(new[]
                {
                    30,
                    30,
                    30,
                    30
                }));
            }

            //await Task.Yield();
        }