From ec1af5705d9a92e728b574238c49dd03e1a3080c Mon Sep 17 00:00:00 2001 From: Kevin B Date: Sat, 2 Apr 2022 22:01:34 -0700 Subject: [PATCH] Fix TabControl foreground color (#2639) * WIP Work on fixing tab control styles * Fixes 2602 Addresses issues with tab control foreground not being set. --- MainDemo.Wpf/Tabs.xaml | 8 +-- .../MaterialDesignSpec.cs | 39 +++++++-------- .../WPF/TabControls/TabControlTests.cs | 50 +++++++++++++++++++ .../MaterialDesignTheme.TabControl.xaml | 3 +- 4 files changed, 74 insertions(+), 26 deletions(-) create mode 100644 MaterialDesignThemes.UITests/WPF/TabControls/TabControlTests.cs diff --git a/MainDemo.Wpf/Tabs.xaml b/MainDemo.Wpf/Tabs.xaml index 938edf0403..d7c7af3e1b 100644 --- a/MainDemo.Wpf/Tabs.xaml +++ b/MainDemo.Wpf/Tabs.xaml @@ -327,10 +327,10 @@ - + - + @@ -353,10 +353,10 @@ - + - + diff --git a/MaterialDesignThemes.UITests/MaterialDesignSpec.cs b/MaterialDesignThemes.UITests/MaterialDesignSpec.cs index 44887df989..f3ed709843 100644 --- a/MaterialDesignThemes.UITests/MaterialDesignSpec.cs +++ b/MaterialDesignThemes.UITests/MaterialDesignSpec.cs @@ -3,28 +3,27 @@ using MaterialDesignColors.ColorManipulation; using Xunit; -namespace MaterialDesignThemes.UITests +namespace MaterialDesignThemes.UITests; + +public static class MaterialDesignSpec { - public static class MaterialDesignSpec - { - /// - /// Small text 4.5:1 against the background - /// https://www.material.io/design/usability/accessibility.html#color-and-contrast - /// - public const double MinimumContrastSmallText = 4.5; + /// + /// Small text 4.5:1 against the background + /// https://www.material.io/design/usability/accessibility.html#color-and-contrast + /// + public const double MinimumContrastSmallText = 4.5; - /// - /// Large text (at 14 pt bold/18 pt regular and up) and graphics 3:1 against the background - /// https://www.material.io/design/usability/accessibility.html#color-and-contrast - /// - public const double MinimumContrastLargeText = 3.0; + /// + /// Large text (at 14 pt bold/18 pt regular and up) and graphics 3:1 against the background + /// https://www.material.io/design/usability/accessibility.html#color-and-contrast + /// + public const double MinimumContrastLargeText = 3.0; - public static void AssertContrastRatio(Color foreground, Color background, double minimumContrastRatio) - { - const double tollerance = 0.1; - - var ratio = ColorAssist.ContrastRatio(foreground, background); - Assert.True(ratio >= minimumContrastRatio - tollerance, $"Contrast ratio '{ratio}' is less than {minimumContrastRatio} with a tollerance of 0.1"); - } + public static void AssertContrastRatio(Color foreground, Color background, double minimumContrastRatio) + { + const double tollerance = 0.1; + + var ratio = ColorAssist.ContrastRatio(foreground, background); + Assert.True(ratio >= minimumContrastRatio - tollerance, $"Contrast ratio '{ratio}' is less than {minimumContrastRatio} with a tollerance of 0.1"); } } diff --git a/MaterialDesignThemes.UITests/WPF/TabControls/TabControlTests.cs b/MaterialDesignThemes.UITests/WPF/TabControls/TabControlTests.cs new file mode 100644 index 0000000000..29e1745ba1 --- /dev/null +++ b/MaterialDesignThemes.UITests/WPF/TabControls/TabControlTests.cs @@ -0,0 +1,50 @@ +using System.ComponentModel; +using System.Threading.Tasks; +using System.Windows.Controls; +using System.Windows.Media; +using XamlTest; +using Xunit; +using Xunit.Abstractions; + +namespace MaterialDesignThemes.UITests.WPF.TabControls; + +public class TabControlTests : TestBase +{ + public TabControlTests(ITestOutputHelper output) + : base(output) + { } + + [Fact] + [Description("Issue 2602")] + public async Task OnLoad_ThemeBrushesSet() + { + await using var recorder = new TestRecorder(App); + + //Arrange + IVisualElement tabControl = await LoadXaml(@" + + + + + + + + "); + + IVisualElement textBlock = await tabControl.GetElement(@"/TabItem[0]/TextBlock[0]"); + + //Act + Color? foreground = await textBlock.GetForegroundColor(); + Color? background = await textBlock.GetEffectiveBackground(); + + //Assert + Assert.NotNull(foreground); + Assert.NotNull(background); + + MaterialDesignSpec.AssertContrastRatio(foreground.Value, background.Value, MaterialDesignSpec.MinimumContrastSmallText); + + recorder.Success(); + } +} diff --git a/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TabControl.xaml b/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TabControl.xaml index 76a084b993..aa28661730 100644 --- a/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TabControl.xaml +++ b/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.TabControl.xaml @@ -177,6 +177,7 @@