Files
better-genshin-impact/Build/MicaSetup/Design/Controls/Window/WindowX.xaml

371 lines
27 KiB
XML

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:conv="clr-namespace:MicaSetup.Design.Converters"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local="clr-namespace:MicaSetup.Design.Controls"
xmlns:markups="clr-namespace:MicaSetup.Design.Markups">
<Color x:Key="SystemAltHighColor">#FF000000</Color>
<Color x:Key="SystemAltLowColor">#33000000</Color>
<Color x:Key="SystemAltMediumColor">#99000000</Color>
<Color x:Key="SystemAltMediumHighColor">#CC000000</Color>
<Color x:Key="SystemAltMediumLowColor">#66000000</Color>
<Color x:Key="SystemBaseHighColor">#FFFFFFFF</Color>
<Color x:Key="SystemBaseLowColor">#33FFFFFF</Color>
<Color x:Key="SystemBaseMediumColor">#99FFFFFF</Color>
<Color x:Key="SystemBaseMediumHighColor">#CCFFFFFF</Color>
<Color x:Key="SystemBaseMediumLowColor">#66FFFFFF</Color>
<Color x:Key="SystemChromeAltLowColor">#FFF2F2F2</Color>
<Color x:Key="SystemChromeBlackHighColor">#FF000000</Color>
<Color x:Key="SystemChromeBlackLowColor">#33000000</Color>
<Color x:Key="SystemChromeBlackMediumLowColor">#66000000</Color>
<Color x:Key="SystemChromeBlackMediumColor">#CC000000</Color>
<Color x:Key="SystemChromeDisabledHighColor">#FF333333</Color>
<Color x:Key="SystemChromeDisabledLowColor">#FF858585</Color>
<Color x:Key="SystemChromeHighColor">#FF767676</Color>
<Color x:Key="SystemChromeLowColor">#FF171717</Color>
<Color x:Key="SystemChromeMediumColor">#FF1F1F1F</Color>
<Color x:Key="SystemChromeMediumHighColor">#FF323232</Color>
<Color x:Key="SystemChromeMediumLowColor">#FF2B2B2B</Color>
<Color x:Key="SystemChromeWhiteColor">#FFFFFFFF</Color>
<Color x:Key="SystemChromeGrayColor">#FF767676</Color>
<Color x:Key="SystemListLowColor">#19FFFFFF</Color>
<Color x:Key="SystemListMediumColor">#33FFFFFF</Color>
<Color x:Key="SystemErrorTextColor">#FFF000</Color>
<SolidColorBrush x:Key="ButtonBackground" Color="{StaticResource SystemBaseLowColor}" />
<SolidColorBrush x:Key="ButtonBackgroundPointerOver"
Opacity="0.1"
Color="{StaticResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="ButtonBackgroundPressed" Color="{StaticResource SystemBaseMediumLowColor}" />
<SolidColorBrush x:Key="ButtonBackgroundDisabled" Color="{StaticResource SystemBaseLowColor}" />
<SolidColorBrush x:Key="ButtonForeground" Color="{StaticResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="ButtonForegroundPointerOver" Color="{StaticResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="ButtonForegroundPressed" Color="{StaticResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="ButtonForegroundDisabled" Color="{StaticResource SystemBaseMediumLowColor}" />
<SolidColorBrush x:Key="ButtonBorderBrush" Color="Transparent" />
<SolidColorBrush x:Key="ButtonBorderBrushPointerOver" Color="Transparent" />
<SolidColorBrush x:Key="ButtonBorderBrushPressed" Color="Transparent" />
<SolidColorBrush x:Key="ButtonBorderBrushDisabled" Color="Transparent" />
<conv:AddConverter x:Key="AddConverter" />
<conv:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" />
<conv:BoolNegationConverter x:Key="BoolNegationConverter" />
<conv:NullToBoolConverter x:Key="NullToBoolConverter" />
<conv:NullToBoolConverter x:Key="NullToBoolInvertedConverter" IsInverted="True" />
<Style x:Key="DefaultWindowXStyle" TargetType="{x:Type local:WindowX}">
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="BorderBrush" Value="#313A4C" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Background" Value="White" />
<Setter Property="local:WindowXCaption.Background" Value="Transparent" />
<Setter Property="local:WindowXCaption.Foreground">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource TextFillColorPrimary}" />
</Setter.Value>
</Setter>
<Setter Property="local:WindowXCaption.Height" Value="36" />
<Setter Property="WindowChrome.WindowChrome">
<Setter.Value>
<WindowChrome CaptionHeight="0"
CornerRadius="8"
GlassFrameThickness="-1"
NonClientFrameEdges="None"
ResizeBorderThickness="3"
UseAeroCaptionButtons="False" />
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:WindowX}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Grid x:Name="PART_GrdMain">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Grid x:Name="PART_GrdCaption"
Height="{Binding Path=(local:WindowXCaption.Height), RelativeSource={RelativeSource AncestorType=Window}}"
Background="{Binding Path=(local:WindowXCaption.Background), RelativeSource={RelativeSource AncestorType=Window}}">
<i:Interaction.Behaviors>
<local:WindowTitleHeaderBehavior />
</i:Interaction.Behaviors>
<Grid Margin="{Binding Path=(local:WindowXCaption.Padding), RelativeSource={RelativeSource AncestorType=Window}}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel x:Name="PART_StkTitle"
VerticalAlignment="Stretch"
Orientation="Horizontal">
<Image x:Name="PART_ImgIcon"
Width="{TemplateBinding FontSize,
Converter={StaticResource AddConverter},
ConverterParameter={markups:Double Value=5}}"
Height="{TemplateBinding FontSize,
Converter={StaticResource AddConverter},
ConverterParameter={markups:Double Value=5}}"
Margin="8,0,0,0"
VerticalAlignment="Center"
RenderOptions.BitmapScalingMode="HighQuality"
Source="{Binding Path=Icon, RelativeSource={RelativeSource AncestorType=Window}}">
<i:Interaction.Behaviors>
<local:WindowTitleIconBehavior />
</i:Interaction.Behaviors>
<Image.Style>
<Style TargetType="{x:Type Image}">
<Style.Triggers />
</Style>
</Image.Style>
</Image>
<TextBlock x:Name="PART_TxtTitle"
Margin="5,0,0,0"
VerticalAlignment="Center"
Foreground="{Binding Path=(local:WindowXCaption.Foreground), RelativeSource={RelativeSource AncestorType=Window}}"
Text="{TemplateBinding Title}" />
</StackPanel>
<ContentControl x:Name="PART_CpHeader"
Content="{Binding Path=(local:WindowXCaption.Header), RelativeSource={RelativeSource AncestorType=Window}}"
TextBlock.Foreground="{Binding Path=(local:WindowXCaption.Foreground), RelativeSource={RelativeSource AncestorType=Window}}"
TextElement.Foreground="{Binding Path=(local:WindowXCaption.Foreground), RelativeSource={RelativeSource AncestorType=Window}}"
Visibility="Visible" />
<ContentControl x:Name="PART_CcExtend"
Grid.Column="1"
Content="{Binding Path=(local:WindowXCaption.ExtendControl), RelativeSource={RelativeSource AncestorType=Window}}" />
<Button x:Name="PART_BtnMinimize"
Grid.Column="3"
Command="{Binding MinimizeWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
CommandParameter="{Binding RelativeSource={x:Static RelativeSource.TemplatedParent}}"
Style="{Binding Path=(local:WindowXCaption.MinimizeButtonStyle), RelativeSource={RelativeSource AncestorType=Window}}" />
<Button x:Name="PART_BtnMaximize"
Grid.Column="4"
Command="{Binding MaximizeOrRestoreWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
CommandParameter="{Binding RelativeSource={x:Static RelativeSource.TemplatedParent}}"
Style="{Binding Path=(local:WindowXCaption.MaximizeButtonStyle), RelativeSource={RelativeSource AncestorType=Window}}" />
<Button x:Name="PART_BtnClose"
Grid.Column="5"
Command="{Binding CloseWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
CommandParameter="{Binding RelativeSource={x:Static RelativeSource.TemplatedParent}}"
IsEnabled="{Binding Path=(local:WindowXCaption.DisableCloseButton), RelativeSource={RelativeSource AncestorType=Window}, Converter={StaticResource BoolNegationConverter}}"
Style="{Binding Path=(local:WindowXCaption.CloseButtonStyle), RelativeSource={RelativeSource AncestorType=Window}}" />
</Grid>
</Grid>
<AdornerDecorator Grid.Row="1" Panel.ZIndex="-1">
<ContentPresenter />
</AdornerDecorator>
</Grid>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="ResizeMode" Value="NoResize">
<Setter TargetName="PART_BtnMinimize" Property="Visibility" Value="Collapsed" />
<Setter TargetName="PART_BtnMaximize" Property="Visibility" Value="Collapsed" />
</Trigger>
<Trigger Property="ResizeMode" Value="CanMinimize">
<Setter TargetName="PART_BtnMaximize" Property="Visibility" Value="Collapsed" />
</Trigger>
<Trigger Property="WindowState" Value="Maximized">
<Setter TargetName="PART_GrdMain" Property="Margin" Value="5" />
</Trigger>
<Trigger Property="IsActivated" Value="false">
<Setter TargetName="PART_TxtTitle" Property="Opacity" Value="0.9" />
</Trigger>
<DataTrigger Binding="{Binding Path=(local:WindowXCaption.Icon), RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource NullToBoolConverter}}" Value="True">
<Setter TargetName="PART_ImgIcon" Property="Source" Value="{Binding Path=Icon, RelativeSource={RelativeSource AncestorType=Window}}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=(local:WindowXCaption.Icon), RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource NullToBoolInvertedConverter}}" Value="True">
<Setter TargetName="PART_ImgIcon" Property="Source" Value="{Binding Path=(local:WindowXCaption.Icon), RelativeSource={RelativeSource AncestorType=Window}}" />
</DataTrigger>
<DataTrigger Binding="{Binding Icon, RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource NullToBoolConverter}}" Value="True">
<Setter TargetName="PART_ImgIcon" Property="Visibility" Value="Collapsed" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=(local:WindowXCaption.Header), RelativeSource={RelativeSource Self}, Mode=OneWay, Converter={StaticResource NullToBoolInvertedConverter}}" Value="True">
<Setter TargetName="PART_StkTitle" Property="Visibility" Value="Collapsed" />
<Setter TargetName="PART_CpHeader" Property="Visibility" Value="Visible" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=(local:WindowXCaption.HideBasicButtons), RelativeSource={RelativeSource Self}, Mode=OneWay}" Value="True">
<Setter TargetName="PART_BtnMinimize" Property="Visibility" Value="Collapsed" />
<Setter TargetName="PART_BtnMaximize" Property="Visibility" Value="Collapsed" />
<Setter TargetName="PART_BtnClose" Property="Visibility" Value="Collapsed" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="local:WindowXCaption.MaximizeButtonStyle">
<Setter.Value>
<Style BasedOn="{StaticResource {x:Type Button}}" TargetType="{x:Type Button}">
<Setter Property="Background" Value="{Binding Path=(local:WindowXCaption.Background), RelativeSource={RelativeSource AncestorType=Window}}" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Height" Value="35" />
<Setter Property="Width" Value="{Binding ActualHeight, Converter={StaticResource AddConverter}, ConverterParameter={markups:Double Value=10}, RelativeSource={RelativeSource Self}}" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FontSize" Value="20" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="true">
<Path Width="10"
Height="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Data="M0.025 0 L0.975 0 M0.025 1 L0.975 1 M1 0.975 L1 0.025 M0 0.025 L0 0.975"
Stretch="Uniform"
StrokeThickness="1">
<Path.Stroke>
<SolidColorBrush Color="{DynamicResource TextFillColorPrimary}" />
</Path.Stroke>
<i:Interaction.Behaviors>
<local:WindowRestorePathBehavior />
</i:Interaction.Behaviors>
</Path>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundPointerOver}" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPointerOver}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundPointerOver}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundPointerOver}" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPressed}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundPressed}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundDisabled}" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushDisabled}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundDisabled}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
<Setter Property="local:WindowXCaption.MinimizeButtonStyle">
<Setter.Value>
<Style BasedOn="{StaticResource {x:Type Button}}" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="true">
<Path Width="10"
Height="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Data="M1 0.5 L0 0.5"
Stretch="Uniform"
StrokeThickness="1">
<Path.Stroke>
<SolidColorBrush Color="{DynamicResource TextFillColorPrimary}" />
</Path.Stroke>
</Path>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource WindowControlButtonColorDefault}" />
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPointerOver}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundPointerOver}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundPointerOver}" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPressed}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundPressed}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundDisabled}" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushDisabled}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundDisabled}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Height" Value="35" />
<Setter Property="Width" Value="{Binding ActualHeight, Converter={StaticResource AddConverter}, ConverterParameter={markups:Double Value=10}, RelativeSource={RelativeSource Self}}" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FontSize" Value="20" />
<Setter Property="Background" Value="{Binding Path=(local:WindowXCaption.Background), RelativeSource={RelativeSource AncestorType=Window}}" />
</Style>
</Setter.Value>
</Setter>
<Setter Property="local:WindowXCaption.CloseButtonStyle">
<Setter.Value>
<Style BasedOn="{StaticResource {x:Type Button}}" TargetType="{x:Type Button}">
<Setter Property="Background" Value="{Binding Path=(local:WindowXCaption.Background), RelativeSource={RelativeSource AncestorType=Window}}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="true">
<Path x:Name="borderPath"
Width="10"
Height="10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Data="M0,0 L1,1 M0,1 L1,0"
Stretch="Uniform"
StrokeThickness="1">
<Path.Stroke>
<SolidColorBrush Color="{DynamicResource TextFillColorPrimary}" />
</Path.Stroke>
</Path>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#CCC53434" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPointerOver}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundPointerOver}" />
<Setter TargetName="borderPath" Property="Stroke" Value="White" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="#DE6D6C" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushPressed}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundPressed}" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundDisabled}" />
<Setter Property="BorderBrush" Value="{DynamicResource ButtonBorderBrushDisabled}" />
<Setter Property="Foreground" Value="{DynamicResource ButtonForegroundDisabled}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="BorderThickness" Value="0" />
<Setter Property="Height" Value="35" />
<Setter Property="Width" Value="{Binding ActualHeight, Converter={StaticResource AddConverter}, ConverterParameter={markups:Double Value=10}, RelativeSource={RelativeSource Self}}" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="FontSize" Value="20" />
</Style>
</Setter.Value>
</Setter>
</Style>
<Style BasedOn="{StaticResource DefaultWindowXStyle}" TargetType="{x:Type local:WindowX}" />
</ResourceDictionary>