My problem is that in my code the GIF plays once and then gets stuck. I've already tried various ways to solve this but unfortunately nothing helped.I tried stopping it, then setting it to position zero and playing it again. Declaring the GIF as source again didn't help. The only thing that worked was setting the source to $null and then setting the source again. However, this creates a very ugly flickering effect.Here is my current code:
function Get-Controls{ # Find and assign various UI controls from the loaded XAML window by their names $global:Load_Installing_lbl = $global:window.FindName("Installing_lbl") $global:Load_Loader_gpl = $global:window.FindName("Loader_gpl") $global:LoaderNum = 1 $Load_Loader_gpl.Source = [Uri]::new("$PSScriptRoot\Loaders\Loader ($global:LoaderNum).gif") $global:Load_Loader_gpl.Add_MouseLeftButtonDown({ $global:LoaderNum++ if (-not (Test-Path "$PSScriptRoot\Loaders\Loader ($global:LoaderNum).gif")) { $global:LoaderNum = 1 } # Reset the loader to ensure the new GIF will play infinitely $Load_Loader_gpl.Stop() $Load_Loader_gpl.Source = [Uri]::new("$PSScriptRoot\Loaders\Loader ($global:LoaderNum).gif") $Load_Loader_gpl.Play() }) $Load_Loader_gpl.add_MediaEnded({ $wert = [Environment]::GetEnvironmentVariable("Installation", "User") if ($wert -eq "FINISH") { [Environment]::SetEnvironmentVariable("Installation", $null, "User") $global:Window.Close() } else { # Temporarily set the source to null to reset the GIF $Load_Loader_gpl.Stop() $Load_Loader_gpl.Position = [TimeSpan]::Zero # Set the initial position to zero Write-Host "t0.20" $Load_Loader_gpl.Play() } }) # Ensure the GIF plays in an endless loop initially $Load_Loader_gpl.Position = [TimeSpan]::Zero # Set the initial position to zero $Load_Loader_gpl.Play()}
<Window 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" Title="MainWindow" Height="300" Width="300" WindowStyle="None" AllowsTransparency="True" Background="Transparent"><Border CornerRadius="0, 20, 0, 20" Background="LightGray" BorderBrush="#FFFDC400" BorderThickness="5"><Grid><Grid.RowDefinitions><RowDefinition Height="*"/><RowDefinition Height="Auto"/></Grid.RowDefinitions><Label Name="Installing_lbl" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="Bold" FontSize="24">Installing Test....</Label><MediaElement Width="200" Height="200" Grid.Row="1" Margin="10" Name="Loader_gpl" LoadedBehavior="Manual" UnloadedBehavior="Stop"></MediaElement></Grid></Border></Window>
As described above, I'm trying to play a GIF infinitely using XAML and Powershell.