Files
ShrlAlgoToolkit/WPFluent/Controls/ProgressRing/ProgressRing.xaml

105 lines
6.1 KiB
XML

<!--
This Source Code Form is subject to the terms of the MIT License.
If a copy of the MIT was not distributed with this file, You can obtain one at https://opensource.org/licenses/MIT.
Copyright (C) Leszek Pomianowski and WPF UI Contributors.
All Rights Reserved.
-->
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:WPFluent.Controls"
xmlns:converters="clr-namespace:WPFluent.Converters">
<converters:ProgressThicknessConverter x:Key="ProgressThicknessConverter" />
<Style TargetType="{x:Type controls:ProgressRing}">
<Setter Property="Height" Value="60" />
<Setter Property="Width" Value="60" />
<Setter Property="Focusable" Value="False" />
<Setter Property="Foreground" Value="{DynamicResource ProgressRingForegroundThemeBrush}" />
<Setter Property="CoverRingStroke" Value="{DynamicResource ProgressRingBackgroundThemeBrush}" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:ProgressRing}">
<Grid Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
<controls:Arc
EndAngle="359"
StartAngle="0"
Stroke="{TemplateBinding CoverRingStroke}"
StrokeThickness="{Binding Path=Height, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, Converter={StaticResource ProgressThicknessConverter}}"
Visibility="{TemplateBinding CoverRingVisibility}" />
<controls:Arc
EndAngle="{TemplateBinding EngAngle}"
StartAngle="0"
Stroke="{TemplateBinding Foreground}"
StrokeThickness="{Binding Path=Height, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, Converter={StaticResource ProgressThicknessConverter}}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsIndeterminate" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:ProgressRing}">
<Grid Width="{TemplateBinding Width}" Height="{TemplateBinding Height}">
<controls:Arc
EndAngle="359"
StartAngle="0"
Stroke="{TemplateBinding CoverRingStroke}"
StrokeThickness="{Binding Path=Height, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, Converter={StaticResource ProgressThicknessConverter}}"
Visibility="{TemplateBinding CoverRingVisibility}" />
<controls:Arc
x:Name="Arc"
EndAngle="{TemplateBinding IndeterminateAngle}"
RenderTransformOrigin="0.5, 0.5"
StartAngle="0"
Stroke="{TemplateBinding Foreground}"
StrokeThickness="{Binding Path=Height, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay, Converter={StaticResource ProgressThicknessConverter}}">
<controls:Arc.RenderTransform>
<RotateTransform />
</controls:Arc.RenderTransform>
</controls:Arc>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
RepeatBehavior="Forever"
Storyboard.TargetName="Arc"
Storyboard.TargetProperty="(Canvas.RenderTransform).(RotateTransform.Angle)"
To="360"
Duration="0:0:2" />
<DoubleAnimation
AutoReverse="True"
RepeatBehavior="Forever"
Storyboard.TargetName="Arc"
Storyboard.TargetProperty="EndAngle"
From="100"
To="320"
Duration="0:0:5" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard />
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>