Derive nav/content shades from background and make config dialog frameless

This commit is contained in:
Meik
2026-03-05 12:05:51 +01:00
parent 48ae3a5a8f
commit d4777636fc
3 changed files with 129 additions and 7 deletions

View File

@@ -12,9 +12,12 @@
MinHeight="540" MinHeight="540"
MinWidth="840" MinWidth="840"
ResizeMode="NoResize" ResizeMode="NoResize"
WindowStyle="None"
AllowsTransparency="True"
UseLayoutRounding="True" UseLayoutRounding="True"
SnapsToDevicePixels="True" SnapsToDevicePixels="True"
Background="{DynamicResource backgroundColor}" KeyDown="ConfigInfo_KeyDown"
Background="Transparent"
Icon="/Customer Panel;component/Resources/icons/logo_CustomerPanel.ico"> Icon="/Customer Panel;component/Resources/icons/logo_CustomerPanel.ico">
<Window.Resources> <Window.Resources>
<Style x:Key="ConfigLabelStyle" <Style x:Key="ConfigLabelStyle"
@@ -103,6 +106,54 @@
</Setter.Value> </Setter.Value>
</Setter> </Setter>
</Style> </Style>
<Style x:Key="ConfigHeaderButtonStyle"
TargetType="Button">
<Setter Property="Foreground"
Value="{DynamicResource navForeground}" />
<Setter Property="Background"
Value="Transparent" />
<Setter Property="BorderBrush"
Value="{DynamicResource inputBorderColor}" />
<Setter Property="BorderThickness"
Value="1" />
<Setter Property="Width"
Value="30" />
<Setter Property="Height"
Value="30" />
<Setter Property="Cursor"
Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="ControlBorder"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="9">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter TargetName="ControlBorder"
Property="Background"
Value="{DynamicResource inactiveButtonColor}" />
<Setter TargetName="ControlBorder"
Property="BorderBrush"
Value="{DynamicResource itemHoverBorderColor}" />
</Trigger>
<Trigger Property="IsPressed"
Value="True">
<Setter TargetName="ControlBorder"
Property="Opacity"
Value="0.92" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources> </Window.Resources>
<Grid Margin="14"> <Grid Margin="14">
@@ -119,10 +170,11 @@
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid> <Grid MouseLeftButtonDown="Header_MouseLeftButtonDown">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<StackPanel Orientation="Vertical" <StackPanel Orientation="Vertical"
VerticalAlignment="Center"> VerticalAlignment="Center">
@@ -138,10 +190,17 @@
<Image Grid.Column="1" <Image Grid.Column="1"
Width="150" Width="150"
Height="40" Height="40"
Margin="16,0,0,0" Margin="16,0,10,0"
VerticalAlignment="Center" VerticalAlignment="Center"
Stretch="Uniform" Stretch="Uniform"
Source="/Customer Panel;component/Resources/consulting4it-header1.png" /> Source="/Customer Panel;component/Resources/consulting4it-header1.png" />
<Button Grid.Column="2"
Content="X"
FontSize="14"
FontWeight="Bold"
Style="{StaticResource ConfigHeaderButtonStyle}"
Click="OnCloseButtonClick"
ToolTip="{x:Static resx:Resources.close}" />
</Grid> </Grid>
<Grid Grid.Row="2" <Grid Grid.Row="2"

View File

@@ -53,6 +53,23 @@ namespace C4IT_CustomerPanel.forms
MessageBox.Show(cc,"Additional Copyrights"); MessageBox.Show(cc,"Additional Copyrights");
} }
private void Header_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed)
DragMove();
}
private void OnCloseButtonClick(object sender, RoutedEventArgs e)
{
Close();
}
private void ConfigInfo_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Escape)
Close();
}
private void Button_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e) private void Button_PreviewMouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{ {

View File

@@ -221,6 +221,37 @@ namespace C4IT_CustomerPanel.libs
{ {
return (SolidColorBrush)System.Windows.Application.Current.Resources["backgroundColor"]; return (SolidColorBrush)System.Windows.Application.Current.Resources["backgroundColor"];
} }
private static Color BlendColor(Color source, Color target, double amount)
{
amount = Math.Max(0.0, Math.Min(1.0, amount));
return Color.FromArgb(
source.A,
(byte)Math.Round((source.R * (1.0 - amount)) + (target.R * amount)),
(byte)Math.Round((source.G * (1.0 - amount)) + (target.G * amount)),
(byte)Math.Round((source.B * (1.0 - amount)) + (target.B * amount)));
}
private static double GetRelativeLuminance(Color color)
{
return ((0.2126 * color.R) + (0.7152 * color.G) + (0.0722 * color.B)) / 255.0;
}
private static void ApplyBackgroundDerivedResources(Color baseColor)
{
bool isLightBackground = GetRelativeLuminance(baseColor) >= 0.55;
Color panelColor = BlendColor(baseColor, Colors.White, isLightBackground ? 0.06 : 0.08);
Color navColor = BlendColor(baseColor, Colors.Black, isLightBackground ? 0.06 : 0.08);
Color panelBorder = BlendColor(baseColor, isLightBackground ? Colors.Black : Colors.White, isLightBackground ? 0.16 : 0.22);
Color navBorder = BlendColor(baseColor, isLightBackground ? Colors.Black : Colors.White, isLightBackground ? 0.20 : 0.28);
Application.Current.Resources["backgroundColor"] = new SolidColorBrush(baseColor);
Application.Current.Resources["panelBackgroundColor"] = new SolidColorBrush(panelColor);
Application.Current.Resources["navigationRailColor"] = new SolidColorBrush(navColor);
Application.Current.Resources["panelBorderColor"] = new SolidColorBrush(panelBorder);
Application.Current.Resources["navigationRailBorderColor"] = new SolidColorBrush(navBorder);
}
public SolidColorBrush GetHeaderColor() public SolidColorBrush GetHeaderColor()
{ {
return (SolidColorBrush)System.Windows.Application.Current.Resources["headerColor"]; return (SolidColorBrush)System.Windows.Application.Current.Resources["headerColor"];
@@ -958,10 +989,15 @@ namespace C4IT_CustomerPanel.libs
{ {
try try
{ {
System.Windows.Application.Current.Resources["activeButtonColor"] = new SolidColorBrush((Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["activeButtonColor"])); Color activeColor = (Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["activeButtonColor"]);
System.Windows.Application.Current.Resources["inactiveButtonColor"] = new SolidColorBrush((Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["inactiveButtonColor"])); Color inactiveColor = (Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["inactiveButtonColor"]);
System.Windows.Application.Current.Resources["backgroundColor"] = new SolidColorBrush((Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["backgroundColor"])); Color backgroundColor = (Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["backgroundColor"]);
System.Windows.Application.Current.Resources["headerColor"] = new SolidColorBrush((Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["headerColor"])); Color headerColor = (Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["headerColor"]);
System.Windows.Application.Current.Resources["activeButtonColor"] = new SolidColorBrush(activeColor);
System.Windows.Application.Current.Resources["inactiveButtonColor"] = new SolidColorBrush(inactiveColor);
System.Windows.Application.Current.Resources["headerColor"] = new SolidColorBrush(headerColor);
ApplyBackgroundDerivedResources(backgroundColor);
} }
catch catch
{ {
@@ -969,6 +1005,16 @@ namespace C4IT_CustomerPanel.libs
cpConfig._uiColors["backgroundColor"] = Properties.Resources.backgroundColor; cpConfig._uiColors["backgroundColor"] = Properties.Resources.backgroundColor;
cpConfig._uiColors["headerColor"] = Properties.Resources.headerColor; cpConfig._uiColors["headerColor"] = Properties.Resources.headerColor;
cpConfig._uiColors["activeButtonColor"] = Properties.Resources.activeButtonColor; cpConfig._uiColors["activeButtonColor"] = Properties.Resources.activeButtonColor;
Color fallbackActive = (Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["activeButtonColor"]);
Color fallbackInactive = (Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["inactiveButtonColor"]);
Color fallbackBackground = (Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["backgroundColor"]);
Color fallbackHeader = (Color)ConverterHelper.ColorConvertFromString(cpConfig._uiColors["headerColor"]);
System.Windows.Application.Current.Resources["activeButtonColor"] = new SolidColorBrush(fallbackActive);
System.Windows.Application.Current.Resources["inactiveButtonColor"] = new SolidColorBrush(fallbackInactive);
System.Windows.Application.Current.Resources["headerColor"] = new SolidColorBrush(fallbackHeader);
ApplyBackgroundDerivedResources(fallbackBackground);
} }
try try