livia-test/Livia/Resources/Themes/MaterialTitleBarFloatingActionButton.xaml
2025-03-28 14:31:53 +08:00

90 lines
5.1 KiB
XML

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:attachedProperties="clr-namespace:Livia.Views.AttachedProperties"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes">
<Style TargetType="{x:Type ButtonBase}"
x:Key="MaterialTitleBarButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ButtonBase">
<Border Width="32"
Name="Border"
Height="32">
<Button VerticalAlignment="Center"
HorizontalAlignment="Center"
Name="Button"
Background="Transparent"
Style="{StaticResource MaterialDesignFloatingActionButton}">
<materialDesign:PackIcon Name="ButtonIcon"
Foreground="{TemplateBinding Foreground}"
Width="16"
Height="16" />
</Button>
</Border>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=Border, Path=IsMouseOver}"
Value="True" />
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(attachedProperties:MaterialTitleBarButtonProperties.IsCloseButton)}"
Value="True" />
</MultiDataTrigger.Conditions>
<Setter TargetName="Button"
Property="Background"
Value="{StaticResource AlertAlternativeColorBrush}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=Border, Path=IsMouseOver}"
Value="True" />
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(attachedProperties:MaterialTitleBarButtonProperties.IsCloseButton)}"
Value="false" />
</MultiDataTrigger.Conditions>
<Setter TargetName="Button"
Property="Background"
Value="{StaticResource PrimaryTextColorBrush}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=Border, Path=IsMouseOver}"
Value="True" />
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=(attachedProperties:MaterialTitleBarButtonProperties.TrueIconKind)}"
Value="HideOutline" />
</MultiDataTrigger.Conditions>
<Setter TargetName="Button"
Property="Background"
Value="Transparent" />
<Setter TargetName="ButtonIcon"
Property="Foreground"
Value="White" />
</MultiDataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=(attachedProperties:MaterialTitleBarButtonProperties.IconSwitch)}"
Value="True">
<Setter TargetName="ButtonIcon"
Property="Kind"
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(attachedProperties:MaterialTitleBarButtonProperties.TrueIconKind)}" />
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=(attachedProperties:MaterialTitleBarButtonProperties.IconSwitch)}"
Value="False">
<Setter TargetName="ButtonIcon"
Property="Kind"
Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=(attachedProperties:MaterialTitleBarButtonProperties.FalseIconKind)}" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>