FlowPipe.xaml 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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" 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. <!--<BeginStoryboard >
  27. <Storyboard>
  28. <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:0.1" By="0.5" />
  29. </Storyboard>
  30. </BeginStoryboard>-->
  31. </DataTrigger.EnterActions>
  32. <DataTrigger.ExitActions>
  33. <!--<BeginStoryboard>
  34. <Storyboard>
  35. <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:0.1" To="0"/>
  36. </Storyboard>
  37. </BeginStoryboard>-->
  38. <StopStoryboard BeginStoryboardName="FlowStoryboard"/>
  39. </DataTrigger.ExitActions>
  40. </DataTrigger>
  41. </Style.Triggers>
  42. </Style>
  43. </Canvas.Resources>
  44. <Border x:Name="border1" CornerRadius="{Binding ElementName=flowPipeControl,Path=FCornerRadius}" BorderBrush="Gray" BorderThickness="0"
  45. Width="{Binding ElementName=flowPipeControl,Path=Width}" Height="{Binding ElementName=flowPipeControl,Path=Height}">
  46. <Border.Background>
  47. <LinearGradientBrush StartPoint="0.5 0" EndPoint="0.5 1">
  48. <!--<GradientStop Color="Gray" Offset="0"/>-->
  49. <GradientStop Color="Gray" Offset="0"/>
  50. <GradientStop Color="White" Offset="0.5"/>
  51. <GradientStop Color="Gray" Offset="1"/>
  52. <!--<GradientStop Color="Gray" Offset="1"/>-->
  53. </LinearGradientBrush>
  54. </Border.Background>
  55. </Border>
  56. <Line Name="path1"
  57. X1="0" Y1="0" X2="80" Y2="0"
  58. Opacity="{Binding ElementName=flowPipeControl,Path=IsFlowing,Converter={StaticResource boolToDoubleConverter}}"
  59. Stretch="Fill"
  60. Width="{Binding ElementName=flowPipeControl,Path=Width}"
  61. Height="{Binding ElementName=flowPipeControl,Path=Height}"
  62. Stroke="{Binding ElementName=flowPipeControl, Path=FlowColor}" StrokeDashArray="1,3" StrokeDashCap="Round"
  63. StrokeThickness="{Binding ElementName=flowPipeControl,Path=Height}"
  64. Style="{StaticResource AnimatingFlow}" >
  65. </Line>
  66. </Canvas>
  67. </UserControl>