Resources/XAML/ASRRules.xaml
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
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" Style="{StaticResource Page_Style}"> <Grid x:Name="ParentGrid"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <!-- ASR Rule selections row --> <RowDefinition Height="3*" /> <!-- Execute Button Row --> <RowDefinition Height="*" /> </Grid.RowDefinitions> <ListView x:Name="ASRRuleSet1" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="1" ItemContainerStyle="{StaticResource CustomListViewItemStyle}" BorderThickness="0" Margin="0,40,0,0" ScrollViewer.PanningMode="Both"> <ListView.Background> <SolidColorBrush Color="Transparent"/> </ListView.Background> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block abuse of exploited vulnerable signed drivers" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockAbuseOfExploitedVulnerableSignedDrivers" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"> <Label Content="Block Adobe Reader from creating child processes" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockAdobeReaderFromCreatingChildProcesses" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block all Office applications from creating child processes" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockAllOfficeApplicationsFromCreatingChildProcesses" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block credential stealing from the Windows local security authority subsystem" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockCredentialStealingFromTheWindowsLocalSecurityAuthoritySubsystem" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block executable content from email client and webmail" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockExecutableContentFromEmailClientAndWebmail" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block executable files from running unless they meet a prevalence, age, or trusted list criterion" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockExecutableFilesFromRunningUnlessTheyMeetAPrevalenceAgeOrTrustedListCriterion" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block execution of potentially obfuscated scripts" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockExecutionOfPotentiallyObfuscatedScripts" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block JavaScript or VBScript from launching downloaded executable content" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockJavaScriptOrVBScriptFromLaunchingDownloadedExecutableContent" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block Office applications from creating executable content" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockOfficeApplicationsFromCreatingExecutableContent" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block Office applications from injecting code into other processes" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockOfficeApplicationsFromInjectingCodeIntoOtherProcesses" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> </ListView> <ListView x:Name="ASRRuleSet2" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="1" ItemContainerStyle="{StaticResource CustomListViewItemStyle}" BorderThickness="0" Margin="0,40,0,0" ScrollViewer.PanningMode="Both"> <ListView.Background> <SolidColorBrush Color="Transparent"/> </ListView.Background> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"> <Label Content="Block Office communication application from creating child processes" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockOfficeCommunicationApplicationFromCreatingChildProcesses" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"> <Label Content="Block persistence through WMI event subscription" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockPersistenceThroughWMIEventSubscription" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block process creations originating from PSExec and WMI commands" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockProcessCreationsOriginatingFromPSExecAndWMICommands" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block rebooting machine in Safe Mode (preview)" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockRebootingMachineInSafeMode" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block untrusted and unsigned processes that run from USB" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockUntrustedAndUnsignedProcessesThatRunFromUSB" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block use of copied or impersonated system tools (preview)" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockUseOfCopiedOrImpersonatedSystemTools" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block Webshell creation for Servers" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockWebshellCreationForServers" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Block Win32 API calls from Office macros" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="BlockWin32APICallsFromOfficeMacros" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> <ListViewItem Margin="0,5,0,5" HorizontalAlignment="Center" VerticalAlignment="Center"> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center" > <Label Content="Use advanced protection against ransomware" Style="{StaticResource ModernLabelStyle}" Margin="0,0,10,0"/> <ComboBox x:Name="UseAdvancedProtectionAgainstRansomware" Width="90" Margin="10,0,0,0" Style="{StaticResource ModernComboBoxStyle}" ItemContainerStyle="{StaticResource ModernComboBoxItemStyle}"> <ComboBoxItem Content="Disable" /> <ComboBoxItem Content="Block" /> <ComboBoxItem Content="Audit" /> <ComboBoxItem Content="Warn" /> </ComboBox> </StackPanel> </ListViewItem> </ListView> <Button x:Name="RetrieveASRStatus" Style="{StaticResource CustomButtonStyle2}" Margin="12,0,5,0" Grid.Row="1" Grid.ColumnSpan="1" Grid.Column="1" ToolTipService.InitialShowDelay="1000" ToolTip="Using this button will retrieve the latest effective status of each Attack Surface Reduction rule on the system and will populate the combo boxes for you."> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBlock Text="Retrieve ASR Status" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="8,0,8,0" FontWeight="Normal"/> </StackPanel> </Button> <!-- Grid containing the Execute Button --> <Grid x:Name="ExecuteButtonGrid" Height="150" Grid.Row="1" Grid.ColumnSpan="1" Grid.Column="0" Margin="0,0,0,0"> <!-- First Ellipse (Forward1) - Represents the outermost expanding ellipse when the button is clicked --> <!-- Initial height and Width of the Ellipse --> <Ellipse x:Name="EclipseForward1" Height="50" Width="50" HorizontalAlignment="Center" VerticalAlignment="Center"> <!-- Ellipse Fill with a gradient from #ED4264 to #cbad6d --> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ED4264" Offset="0.0" /> <GradientStop Color="#cbad6d" Offset="1.0" /> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> <!-- Second Ellipse (Forward2) - Another expanding ellipse, but starts later than Forward1 --> <Ellipse x:Name="EclipseForward2" Height="50" Width="50" HorizontalAlignment="Center" VerticalAlignment="Center"> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ED4264" Offset="0.0" /> <GradientStop Color="#cbad6d" Offset="1.0" /> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> <!-- Third Ellipse (Forward3) - Another expanding ellipse, starts even later --> <Ellipse x:Name="EclipseForward3" Height="50" Width="50" HorizontalAlignment="Center" VerticalAlignment="Center"> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ED4264" Offset="0.0" /> <GradientStop Color="#cbad6d" Offset="1.0" /> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> <!-- First Ellipse (Backward1) - Represents the outermost contracting ellipse when the button is unchecked --> <Ellipse x:Name="EclipseBackward1" Height="50" Width="50" HorizontalAlignment="Center" VerticalAlignment="Center"> <!-- Ellipse Fill with a gradient from #ef32d9 to #89fffd --> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ef32d9" Offset="0.0" /> <GradientStop Color="#89fffd" Offset="1.0" /> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> <!-- Second Ellipse (Backward2) - Another contracting ellipse, starts later than Backward1 --> <Ellipse x:Name="EclipseBackward2" Height="50" Width="50" HorizontalAlignment="Center" VerticalAlignment="Center"> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ef32d9" Offset="0.0" /> <GradientStop Color="#89fffd" Offset="1.0" /> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> <!-- Third Ellipse (Backward3) - Another contracting ellipse, starts even later --> <Ellipse x:Name="EclipseBackward3" Height="50" Width="50" HorizontalAlignment="Center" VerticalAlignment="Center"> <Ellipse.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ef32d9" Offset="0.0" /> <GradientStop Color="#89fffd" Offset="1.0" /> </LinearGradientBrush> </Ellipse.Fill> </Ellipse> <!-- Refresh Toggle Button - The main button in the center --> <ToggleButton x:Name="ExecuteButton" Height="55" Width="55" HorizontalAlignment="Center" VerticalAlignment="Center" > <ToggleButton.Template> <ControlTemplate TargetType="ToggleButton"> <!-- Border around the button with rounded corners --> <Border x:Name="border" Background="Transparent" CornerRadius="30"> <Grid x:Name="RefreshButtonIconImageGrid"> <!-- Button icon image centered inside the button --> <Image x:Name="RefreshIconImage" Source="icon.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" /> </Grid> </Border> <!-- Triggers for visual states (hover, checked) --> <ControlTemplate.Triggers> <!-- Mouse hover trigger --> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" TargetName="border"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ED4264" Offset="0.0" /> <GradientStop Color="#cbad6d" Offset="1.0" /> </LinearGradientBrush> </Setter.Value> </Setter> </Trigger> <!-- Button checked trigger --> <Trigger Property="IsChecked" Value="True"> <Setter Property="Background" TargetName="border"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ED4264" Offset="0.0" /> <GradientStop Color="#cbad6d" Offset="1.0" /> </LinearGradientBrush> </Setter.Value> </Setter> </Trigger> <!-- MultiTrigger: Hovering while the button is unchecked --> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsMouseOver" Value="True" /> <Condition Property="IsChecked" Value="False" /> </MultiTrigger.Conditions> <Setter Property="Background" TargetName="border"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> <GradientStop Color="#ef32d9" Offset="0.0" /> <GradientStop Color="#89fffd" Offset="1.0" /> </LinearGradientBrush> </Setter.Value> </Setter> </MultiTrigger> </ControlTemplate.Triggers> </ControlTemplate> </ToggleButton.Template> <!-- Triggers for button actions (Checked, Unchecked) --> <ToggleButton.Triggers> <!-- When the button is checked (clicked) --> <EventTrigger RoutedEvent="ToggleButton.Checked"> <EventTrigger.Actions> <!-- Start the forward expanding animations --> <BeginStoryboard x:Name="Ellipse_Activated"> <Storyboard> <!-- Forward1 Animation (Expanding and fading out) --> <DoubleAnimation BeginTime="00:00:00" Duration="00:00:01.5" From="50" To="150" Storyboard.TargetProperty="(Ellipse.Width)" Storyboard.TargetName="EclipseForward1" RepeatBehavior="Forever" /> <DoubleAnimation BeginTime="00:00:00" Duration="00:00:01.5" From="50" To="150" Storyboard.TargetProperty="(Ellipse.Height)" Storyboard.TargetName="EclipseForward1" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EclipseForward1" From="1.0" To="0.0" BeginTime="00:00:00" Duration="00:00:01.5" RepeatBehavior="Forever" /> <!-- Forward2 Animation (Starts 1 second later) --> <DoubleAnimation BeginTime="00:00:00.5" Duration="00:00:01.5" From="50" To="150" Storyboard.TargetProperty="(Ellipse.Width)" Storyboard.TargetName="EclipseForward2" RepeatBehavior="Forever" /> <DoubleAnimation BeginTime="00:00:00.5" Duration="00:00:01.5" From="50" To="150" Storyboard.TargetProperty="(Ellipse.Height)" Storyboard.TargetName="EclipseForward2" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EclipseForward2" From="1.0" To="0.0" BeginTime="00:00:00.5" Duration="00:00:01.5" RepeatBehavior="Forever" /> <!-- Forward3 Animation (Starts 2 seconds later) --> <DoubleAnimation BeginTime="00:00:01" Duration="00:00:01.5" From="50" To="150" Storyboard.TargetProperty="(Ellipse.Width)" Storyboard.TargetName="EclipseForward3" RepeatBehavior="Forever" /> <DoubleAnimation BeginTime="00:00:01" Duration="00:00:01.5" From="50" To="150" Storyboard.TargetProperty="(Ellipse.Height)" Storyboard.TargetName="EclipseForward3" RepeatBehavior="Forever" /> <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EclipseForward3" From="1.0" To="0.0" BeginTime="00:00:01" Duration="00:00:01.5" RepeatBehavior="Forever" /> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> <!-- When the button is unchecked --> <EventTrigger RoutedEvent="ToggleButton.Unchecked"> <EventTrigger.Actions> <!-- Stop the forward animation --> <RemoveStoryboard BeginStoryboardName="Ellipse_Activated" /> <!-- Start the backward contracting animations --> <BeginStoryboard x:Name="Ellipse_Deactivated"> <Storyboard> <!-- Backward1 Animation (Contracting and fading in) --> <DoubleAnimation BeginTime="00:00:00" Duration="00:00:01.5" From="150" To="50" Storyboard.TargetProperty="(Ellipse.Width)" Storyboard.TargetName="EclipseBackward1" /> <DoubleAnimation BeginTime="00:00:00" Duration="00:00:01.5" From="150" To="50" Storyboard.TargetProperty="(Ellipse.Height)" Storyboard.TargetName="EclipseBackward1" /> <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EclipseBackward1" From="0.0" To="1.0" BeginTime="00:00:00" Duration="00:00:01.5" /> <!-- Backward2 Animation (Starts 1 second later) --> <DoubleAnimation BeginTime="00:00:00" Duration="00:00:01" From="125" To="50" Storyboard.TargetProperty="(Ellipse.Width)" Storyboard.TargetName="EclipseBackward2" /> <DoubleAnimation BeginTime="00:00:00" Duration="00:00:01" From="125" To="50" Storyboard.TargetProperty="(Ellipse.Height)" Storyboard.TargetName="EclipseBackward2" /> <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EclipseBackward2" From="0.0" To="1.0" BeginTime="00:00:00" Duration="00:00:01" /> <!-- Backward3 Animation (Starts 2 seconds later) --> <DoubleAnimation BeginTime="00:00:00" Duration="00:00:00.5" From="100" To="50" Storyboard.TargetProperty="(Ellipse.Width)" Storyboard.TargetName="EclipseBackward3" /> <DoubleAnimation BeginTime="00:00:00" Duration="00:00:00.5" From="100" To="50" Storyboard.TargetProperty="(Ellipse.Height)" Storyboard.TargetName="EclipseBackward3" /> <DoubleAnimation Storyboard.TargetProperty="Opacity" Storyboard.TargetName="EclipseBackward3" From="0.0" To="1.0" BeginTime="00:00:00" Duration="00:00:00.5" /> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </ToggleButton.Triggers> </ToggleButton> </Grid> <!--End of Refresh Button Grid--> </Grid> </UserControl> |