Hallo,
ich habe mir einen Blinkenden Button erstellt mit einem Icon:
Der Style
die Zuweisung im Window:
das Icon:
Das funktionierd wunderbar.
Schöner wäre es allerdings, wenn der Button kurz (sagen wir 2 mal) blinkt, pausiert, blinkt, pausiert usw.
Ich hab gesehen, das es PauseStoryBoard und ResumeStoryborad gibt, kann dort aber keine Duration angeben.
ist das überhaupt möglich im Xaml, oder muss ich da per CodeBehind ran?
Danke Euch
Grüße
Michael
ich habe mir einen Blinkenden Button erstellt mit einem Icon:
Der Style
XML-Quellcode
- <Style x:Key="IconBlinkButton" TargetType="{x:Type Button}" >
- <Setter Property="WindowChrome.IsHitTestVisibleInChrome" Value="True" />
- <Setter Property="Background" Value="Transparent"/>
- <Setter Property="Foreground" Value="{StaticResource DefaultBlueBrush}"/>
- <Setter Property="BorderThickness" Value="0" />
- <Setter Property="FontSize" Value="{StaticResource FontSizeRegular}" />
- <Setter Property="Padding" Value="10 10"/>
- <Setter Property="Margin" Value="5"/>
- <Setter Property="Width" Value="{Binding ActualHeight, RelativeSource={RelativeSource Self}}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type ButtonBase}">
- <Border x:Name="border"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- Background="{TemplateBinding Background}"
- SnapsToDevicePixels="True">
- <Border.RenderTransform>
- <ScaleTransform />
- </Border.RenderTransform>
- <Border.RenderTransformOrigin>
- <Point X="0.5" Y="0.5" />
- </Border.RenderTransformOrigin>
- <Grid HorizontalAlignment="Center" VerticalAlignment="Center">
- <ContentPresenter Content="{TemplateBinding Content}" Focusable="False" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
- </Grid>
- </Border>
- <ControlTemplate.Triggers>
- <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=IsVisible}" Value="True">
- <DataTrigger.EnterActions>
- <BeginStoryboard Name="BlinkStoryBoard">
- <Storyboard>
- <DoubleAnimation To="1.2" Duration="0:0:0.50" Storyboard.TargetName="border" RepeatBehavior="Forever" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" />
- <DoubleAnimation To="1.2" Duration="0:0:0.50" Storyboard.TargetName="border" RepeatBehavior="Forever" Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" />
- </Storyboard>
- </BeginStoryboard>
- </DataTrigger.EnterActions>
- <DataTrigger.ExitActions>
- <RemoveStoryboard BeginStoryboardName="BlinkStoryBoard"/>
- </DataTrigger.ExitActions>
- </DataTrigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
die Zuweisung im Window:
das Icon:
XML-Quellcode
- <Canvas x:Key="IconSave" Width="24" Height="24" >
- <Path Data="M17 3H5C3.89 3 3 3.9 3 5V19C3 20.1 3.89 21 5 21H19C20.1 21 21 20.1 21 19V7L17 3M19 19H5V5H16.17L19 7.83V19M12 12C10.34 12 9 13.34 9 15S10.34 18 12 18 15 16.66 15 15 13.66 12 12 12M6 6H15V10H6V6Z" Fill="{Binding Foreground, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Control}}" />
- </Canvas>
Das funktionierd wunderbar.
Schöner wäre es allerdings, wenn der Button kurz (sagen wir 2 mal) blinkt, pausiert, blinkt, pausiert usw.
Ich hab gesehen, das es PauseStoryBoard und ResumeStoryborad gibt, kann dort aber keine Duration angeben.
ist das überhaupt möglich im Xaml, oder muss ich da per CodeBehind ran?
Danke Euch
Grüße
Michael
"Hier könnte Ihre Werbung stehen..."