BadgeBaseStyle.xaml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  2. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  3. xmlns:hc="clr-namespace:HandyControl.Controls">
  4. <SineEase x:Key="SineEaseOut" EasingMode="EaseOut" />
  5. <ControlTemplate x:Key="BadgeTextTemplate" TargetType="hc:Badge">
  6. <hc:SimplePanel>
  7. <ContentPresenter />
  8. <Border x:Name="Border" Visibility="{TemplateBinding ShowBadge,Converter={StaticResource Boolean2VisibilityConverter}}" RenderTransformOrigin="0.5 0.5" Style="{StaticResource BorderCircular}" Margin="{TemplateBinding BadgeMargin}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
  9. <Border.RenderTransform>
  10. <ScaleTransform />
  11. </Border.RenderTransform>
  12. <ContentPresenter ContentSource="Text" Margin="{TemplateBinding Padding}" />
  13. </Border>
  14. </hc:SimplePanel>
  15. <ControlTemplate.Triggers>
  16. <EventTrigger RoutedEvent="hc:Badge.ValueChanged">
  17. <BeginStoryboard>
  18. <Storyboard AutoReverse="True">
  19. <DoubleAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" BeginTime="0" Duration="0:0:.1" From="1" To="1.2" EasingFunction="{StaticResource SineEaseOut}" />
  20. <DoubleAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" BeginTime="0" Duration="0:0:.1" From="1" To="1.2" EasingFunction="{StaticResource SineEaseOut}" />
  21. </Storyboard>
  22. </BeginStoryboard>
  23. </EventTrigger>
  24. </ControlTemplate.Triggers>
  25. </ControlTemplate>
  26. <ControlTemplate x:Key="BadgeDotTemplate" TargetType="hc:Badge">
  27. <hc:SimplePanel>
  28. <ContentPresenter />
  29. <Border Visibility="{TemplateBinding ShowBadge,Converter={StaticResource Boolean2VisibilityConverter}}" Margin="{TemplateBinding BadgeMargin}" Width="10" Height="10" CornerRadius="5" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" />
  30. </hc:SimplePanel>
  31. </ControlTemplate>
  32. <ControlTemplate x:Key="BadgeProcessingTemplate" TargetType="hc:Badge">
  33. <hc:SimplePanel>
  34. <ContentPresenter />
  35. <Ellipse Visibility="{TemplateBinding ShowBadge,Converter={StaticResource Boolean2VisibilityConverter}}" Height="10" Width="10" Fill="{TemplateBinding Background}" RenderTransformOrigin="0.5 0.5" Margin="{TemplateBinding BadgeMargin}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
  36. <Ellipse.OpacityMask>
  37. <RadialGradientBrush>
  38. <GradientStop Offset="0" Color="Transparent" />
  39. <GradientStop Offset="1" Color="Black" />
  40. </RadialGradientBrush>
  41. </Ellipse.OpacityMask>
  42. <Ellipse.RenderTransform>
  43. <ScaleTransform />
  44. </Ellipse.RenderTransform>
  45. <Ellipse.Triggers>
  46. <EventTrigger RoutedEvent="Loaded">
  47. <BeginStoryboard>
  48. <Storyboard RepeatBehavior="Forever" DesiredFrameRate="20">
  49. <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" BeginTime="0" Duration="0:0:1" From="1" To="2" EasingFunction="{StaticResource SineEaseOut}" />
  50. <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" BeginTime="0" Duration="0:0:1" From="1" To="2" EasingFunction="{StaticResource SineEaseOut}" />
  51. <DoubleAnimation Storyboard.TargetProperty="Opacity" BeginTime="0" Duration="0:0:1" From="1" To="0" EasingFunction="{StaticResource SineEaseOut}" />
  52. </Storyboard>
  53. </BeginStoryboard>
  54. </EventTrigger>
  55. </Ellipse.Triggers>
  56. </Ellipse>
  57. <Border Visibility="{TemplateBinding ShowBadge,Converter={StaticResource Boolean2VisibilityConverter}}" Margin="{TemplateBinding BadgeMargin}" Width="10" Height="10" CornerRadius="5" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" />
  58. </hc:SimplePanel>
  59. </ControlTemplate>
  60. <Style x:Key="BadgeBaseStyle" TargetType="hc:Badge">
  61. <Setter Property="Focusable" Value="False"/>
  62. <Setter Property="Background" Value="{DynamicResource SecondaryRegionBrush}" />
  63. <Setter Property="Foreground" Value="{DynamicResource TextIconBrush}" />
  64. <Setter Property="BorderThickness" Value="1" />
  65. <Setter Property="BorderBrush" Value="{DynamicResource RegionBrush}" />
  66. <Setter Property="Padding" Value="6,2" />
  67. <Setter Property="Template" Value="{StaticResource BadgeTextTemplate}" />
  68. <Setter Property="HorizontalContentAlignment" Value="Right" />
  69. <Setter Property="VerticalContentAlignment" Value="Top" />
  70. <Setter Property="BadgeMargin" Value="0,-10,-10,0" />
  71. <Style.Triggers>
  72. <Trigger Property="Status" Value="Dot">
  73. <Setter Property="Template" Value="{StaticResource BadgeDotTemplate}" />
  74. <Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}" />
  75. <Setter Property="BadgeMargin" Value="0,-5,-5,0" />
  76. </Trigger>
  77. <Trigger Property="Status" Value="Processing">
  78. <Setter Property="Template" Value="{StaticResource BadgeProcessingTemplate}" />
  79. <Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}" />
  80. <Setter Property="BadgeMargin" Value="0,-5,-5,0" />
  81. </Trigger>
  82. </Style.Triggers>
  83. </Style>
  84. </ResourceDictionary>