FlowPipe.xaml 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <UserControl x:Class="CyberX8_Themes.UserControls.FlowPipe"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:converters="clr-namespace:CyberX8_Themes.Converters"
  5. Name="flowPipeControl" Width="100" Height="8" FlowDirection="{Binding ElementName=flowPipeControl,Path=IsReverse,Converter={StaticResource boolToDirection}}">
  6. <UserControl.Resources>
  7. <converters:BoolToReverse x:Key="boolToReverse"/>
  8. <converters:BoolToDoubleConverter x:Key="boolToDoubleConverter"/>
  9. </UserControl.Resources>
  10. <UserControl.RenderTransform>
  11. <TransformGroup>
  12. <RotateTransform Angle="{Binding ElementName=flowPipeControl,Path=RotateTransformValue}"/>
  13. </TransformGroup>
  14. </UserControl.RenderTransform>
  15. <Canvas MinHeight="4" MinWidth="100" >
  16. <Canvas.Resources>
  17. <Style x:Key="AnimatingFlow" TargetType="{x:Type Line}">
  18. <Style.Triggers>
  19. <DataTrigger Binding="{Binding ElementName=flowPipeControl,Path=IsFlowing}" Value="True">
  20. <DataTrigger.EnterActions>
  21. <BeginStoryboard Name="FlowStoryboard">
  22. <Storyboard RepeatBehavior="Forever" Timeline.DesiredFrameRate="10">
  23. <DoubleAnimation Storyboard.TargetProperty="StrokeDashOffset" Duration="0:0:10" To="70"/>
  24. </Storyboard>
  25. </BeginStoryboard>
  26. </DataTrigger.EnterActions>
  27. <DataTrigger.ExitActions>
  28. <StopStoryboard BeginStoryboardName="FlowStoryboard" />
  29. </DataTrigger.ExitActions>
  30. </DataTrigger>
  31. </Style.Triggers>
  32. </Style>
  33. </Canvas.Resources>
  34. <Border x:Name="border1" CornerRadius="{Binding ElementName=flowPipeControl,Path=FCornerRadius}" BorderBrush="Gray" BorderThickness="0"
  35. Width="{Binding ElementName=flowPipeControl,Path=Width}" Height="{Binding ElementName=flowPipeControl,Path=Height}">
  36. <Border.Background>
  37. <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
  38. <!--<GradientStop Color="Gray" Offset="0"/>-->
  39. <GradientStop Color="Gray" Offset="0"/>
  40. <GradientStop Color="White" Offset="0.5"/>
  41. <GradientStop Color="Gray" Offset="1"/>
  42. <!--<GradientStop Color="Gray" Offset="1"/>-->
  43. </LinearGradientBrush>
  44. </Border.Background>
  45. </Border>
  46. <Line Name="path1"
  47. X1="0" Y1="0" X2="80" Y2="0"
  48. Opacity="{Binding ElementName=flowPipeControl,Path=IsFlowing,Converter={StaticResource boolToDoubleConverter}}"
  49. Stretch="Fill"
  50. Width="{Binding ElementName=flowPipeControl,Path=Width}"
  51. Height="{Binding ElementName=flowPipeControl,Path=Height}"
  52. Stroke="{Binding ElementName=flowPipeControl, Path=FlowColor}" StrokeDashArray="1,3" StrokeDashCap="Round"
  53. StrokeThickness="{Binding ElementName=flowPipeControl,Path=Height}"
  54. Style="{StaticResource AnimatingFlow}" >
  55. </Line>
  56. </Canvas>
  57. </UserControl>