| 

.NET C# Java Javascript Exception

2
Wie kann ein Text in XAML mit einem Storyboard für fünf Sekunden zum Blinken gebracht werden? Der Auslöser kann ein Button sein, der beliebig oft gedrückt werden darf. Nach jedem Drücken soll das Blinken wieder fünf Sekunden andauern.
26.02.2011
billy 21 1
2 Antworten
0
Vielleicht hilft Dir dieser Link weiter. Falls es Dir um das Blinken selbst geht, wird Deine Frage dort beantwortet, allerdings bei MouseOver. Wie dort auch steht, müsstest Du sonst das Ganze noch an einen Button binden.

Ich habe gerade aber kein VS zur Hand, und aus der Erinnerung bekomme ich das gerade nicht Fehlerfrei hin.
26.02.2011
Jens Duczmal 2,2k 2 8
0
Mein bisherger Code siehe unten funktioniert hat aber das Problem, wenn man den Button schon vor Ablauf der Blinkzeit drückt, so kann das Blinken nicht neu gestartet werden. Was fehlt da noch oder ist der Ansatz ganz falsch?

<Window x:Class="blinken.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:im="clr-namespace:Microsoft.Expression.Interactivity.Media;assembly=Microsoft.Expression.Interactions"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="Window"
Title="MainWindow"
Width="400"
Height="100"
mc:Ignorable="d">
<Window.Resources>
<Storyboard x:Key="StoryboardBlink"
AutoReverse="True"
RepeatBehavior="3x">
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="theTextBlock" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="0:0:0.25" Value="{x:Static Visibility.Hidden}" />
</ObjectAnimationUsingKeyFrames>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="theTextBlock" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>

</Storyboard>
</Window.Resources>

<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock x:Name="theTextBlock"
Grid.Column="1"
Text="Bitte blinken!" />
<Button Content="Start">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<im:ControlStoryboardAction Storyboard="{StaticResource StoryboardBlink}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>


</Grid>
</Window>
26.02.2011
billy 21 1
Das kommt davon, wenn man sich in Storyboard-Threads einmischt, von denen man keine Ahnung hat :) Hm... kannst Du nicht den Button für die Zeit, die das Blinken andauert, auf IsEnable=False setzen? Ob das Suboptimal ist, würde ich davon abhängig machen, was nach dem Klick im Programm passiert.
Jens Duczmal 26.02.2011
Der Button steht hier nur als Synonym für ein Ereignis, welches unvorhergesehen eintreten kann. Das Storyboard soll eigentlich nur neu gestartet werden.
billy 26.02.2011

Stelle deine .net-Frage jetzt!