<UserControl xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:convt="using:SPTInstaller.Converters" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" x:Class="SPTInstaller.CustomControls.StatusSpinner" > <UserControl.Resources> <convt:StatusSpinnerIsStateConverter x:Key="IsStateConverter"/> <convt:StatusSpinnerIsProcessingConverter x:Key="IsInProcessingStateConverter"/> </UserControl.Resources> <UserControl.Styles> <Style Selector="Arc.running"> <Setter Property="Stroke" Value="DodgerBlue"/> </Style> <Style Selector="Path.ok"> <Setter Property="Data" Value="{StaticResource CircledCheck}"/> <Setter Property="Fill" Value="Green"/> </Style> <Style Selector="Path.warning"> <Setter Property="Data" Value="{StaticResource CircledWarn}"/> <Setter Property="Fill" Value="Goldenrod"/> </Style> <Style Selector="Path.error"> <Setter Property="Data" Value="{StaticResource CircledX}"/> <Setter Property="Fill" Value="Red"/> </Style> <Style Selector="Arc"> <Setter Property="Stroke" Value="Gray"/> <Setter Property="IsVisible" Value="{Binding State, RelativeSource={RelativeSource AncestorType=UserControl}, Converter={StaticResource ResourceKey=IsInProcessingStateConverter}}"/> <Style.Animations> <Animation Duration="0:0:1" IterationCount="Infinite"> <KeyFrame Cue="0%"> <Setter Property="RotateTransform.Angle" Value="0"/> </KeyFrame> <KeyFrame Cue="100%"> <Setter Property="RotateTransform.Angle" Value="360"/> </KeyFrame> </Animation> </Style.Animations> </Style> </UserControl.Styles> <Grid> <Canvas Margin="0 3 0 0" Height="20" Width="20" IsVisible="{Binding State, RelativeSource={RelativeSource AncestorType=UserControl}, Converter={StaticResource ResourceKey=IsInProcessingStateConverter}, ConverterParameter=invert}"> <Ellipse Fill="White" Height="15" Width="15" Canvas.Top="3" Canvas.Left="3" /> <Path StrokeThickness="2" Classes.ok="{Binding State, RelativeSource={RelativeSource AncestorType=UserControl}, Converter={StaticResource ResourceKey=IsStateConverter}, ConverterParameter=OK}" Classes.warning="{Binding State, RelativeSource={RelativeSource AncestorType=UserControl}, Converter={StaticResource ResourceKey=IsStateConverter}, ConverterParameter=Warning}" Classes.error="{Binding State, RelativeSource={RelativeSource AncestorType=UserControl}, Converter={StaticResource ResourceKey=IsStateConverter}, ConverterParameter=Error}" /> </Canvas> <Arc StartAngle="280" SweepAngle="80" Margin="0 3 0 0" StrokeThickness="3" Width="20" Height="20" VerticalAlignment="Top" Classes.running="{Binding State, RelativeSource={RelativeSource AncestorType=UserControl}, Converter={StaticResource ResourceKey=IsStateConverter}, ConverterParameter=Running}" /> </Grid> </UserControl>