FlowPipe.xaml 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <UserControl x:Class="Venus_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:Venus_Themes.Converters"
  5. Name="flowPipeControl" Width="100" Height="8">
  6. <UserControl.Resources>
  7. <converters:BoolToReverse x:Key="boolToReverse"/>
  8. </UserControl.Resources>
  9. <UserControl.RenderTransform>
  10. <RotateTransform Angle="0" x:Name="rotateTransform"/>
  11. </UserControl.RenderTransform>
  12. <Canvas MinHeight="4" MinWidth="100">
  13. <Canvas.Resources>
  14. <Style x:Key="AnimatingFlow" TargetType="{x:Type Line}">
  15. <Style.Triggers>
  16. <DataTrigger Binding="{Binding ElementName=flowPipeControl,Path=IsFlowing}" Value="True">
  17. <DataTrigger.EnterActions>
  18. <BeginStoryboard Name="FlowStoryboard">
  19. <Storyboard RepeatBehavior="Forever" Timeline.DesiredFrameRate="10">
  20. <DoubleAnimation Storyboard.TargetProperty="StrokeDashOffset" Duration="0:0:10" To="70"/>
  21. </Storyboard>
  22. </BeginStoryboard>
  23. <BeginStoryboard >
  24. <Storyboard>
  25. <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" By="0.3" />
  26. </Storyboard>
  27. </BeginStoryboard>
  28. </DataTrigger.EnterActions>
  29. <DataTrigger.ExitActions>
  30. <BeginStoryboard>
  31. <Storyboard>
  32. <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" To="0"/>
  33. </Storyboard>
  34. </BeginStoryboard>
  35. <StopStoryboard BeginStoryboardName="FlowStoryboard" />
  36. </DataTrigger.ExitActions>
  37. </DataTrigger>
  38. </Style.Triggers>
  39. </Style>
  40. </Canvas.Resources>
  41. <Border x:Name="border1" CornerRadius="{Binding ElementName=flowPipeControl,Path=FCornerRadius}" BorderBrush="Gray" BorderThickness="0"
  42. Width="{Binding ElementName=flowPipeControl,Path=Width}" Height="{Binding ElementName=flowPipeControl,Path=Height}">
  43. <Border.Background>
  44. <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
  45. <GradientStop Color="Silver" Offset="0"/>
  46. <GradientStop Color="White" Offset="0.5"/>
  47. <GradientStop Color="Silver" Offset="1"/>
  48. </LinearGradientBrush>
  49. </Border.Background>
  50. </Border>
  51. <Line Name="path1"
  52. X1="0" Y1="0" X2="80" Y2="0"
  53. Opacity="0"
  54. Stretch="Fill"
  55. Width="{Binding ElementName=flowPipeControl,Path=Width}"
  56. Height="{Binding ElementName=flowPipeControl,Path=Height}"
  57. Stroke="{Binding ElementName=flowPipeControl, Path=FlowColor}" StrokeDashArray="1,3" StrokeDashCap="Round"
  58. StrokeThickness="{Binding ElementName=flowPipeControl,Path=Height}"
  59. Style="{StaticResource AnimatingFlow}">
  60. </Line>
  61. </Canvas>
  62. </UserControl>