<UserControl x:Class="CyberX8_Themes.UserControls.FlowPipe" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:converters="clr-namespace:CyberX8_Themes.Converters" Name="flowPipeControl" Width="100" Height="8" FlowDirection="{Binding ElementName=flowPipeControl,Path=IsReverse,Converter={StaticResource boolToDirection}}"> <UserControl.Resources> <converters:BoolToReverse x:Key="boolToReverse"/> <converters:BoolToDoubleConverter x:Key="boolToDoubleConverter"/> </UserControl.Resources> <UserControl.RenderTransform> <TransformGroup> <RotateTransform Angle="{Binding ElementName=flowPipeControl,Path=RotateTransformValue}"/> </TransformGroup> </UserControl.RenderTransform> <Canvas MinHeight="4" MinWidth="100" > <Canvas.Resources> <Style x:Key="AnimatingFlow" TargetType="{x:Type Line}"> <Style.Triggers> <DataTrigger Binding="{Binding ElementName=flowPipeControl,Path=IsFlowing}" Value="True"> <DataTrigger.EnterActions> <BeginStoryboard Name="FlowStoryboard"> <Storyboard RepeatBehavior="Forever" Timeline.DesiredFrameRate="10"> <DoubleAnimation Storyboard.TargetProperty="StrokeDashOffset" Duration="0:0:10" To="70"/> </Storyboard> </BeginStoryboard> </DataTrigger.EnterActions> <DataTrigger.ExitActions> <StopStoryboard BeginStoryboardName="FlowStoryboard" /> </DataTrigger.ExitActions> </DataTrigger> </Style.Triggers> </Style> </Canvas.Resources> <Border x:Name="border1" CornerRadius="{Binding ElementName=flowPipeControl,Path=FCornerRadius}" BorderBrush="Gray" BorderThickness="0" Width="{Binding ElementName=flowPipeControl,Path=Width}" Height="{Binding ElementName=flowPipeControl,Path=Height}"> <Border.Background> <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1"> <!--<GradientStop Color="Gray" Offset="0"/>--> <GradientStop Color="Gray" Offset="0"/> <GradientStop Color="White" Offset="0.5"/> <GradientStop Color="Gray" Offset="1"/> <!--<GradientStop Color="Gray" Offset="1"/>--> </LinearGradientBrush> </Border.Background> </Border> <Line Name="path1" X1="0" Y1="0" X2="80" Y2="0" Opacity="{Binding ElementName=flowPipeControl,Path=IsFlowing,Converter={StaticResource boolToDoubleConverter}}" Stretch="Fill" Width="{Binding ElementName=flowPipeControl,Path=Width}" Height="{Binding ElementName=flowPipeControl,Path=Height}" Stroke="{Binding ElementName=flowPipeControl, Path=FlowColor}" StrokeDashArray="1,3" StrokeDashCap="Round" StrokeThickness="{Binding ElementName=flowPipeControl,Path=Height}" Style="{StaticResource AnimatingFlow}" > </Line> </Canvas> </UserControl>