i want Storyboard automatically begin if something is changed :- E.g I have text block which can contain text "On" or "Off"
<TextBlock Name="BindedTextBlock" /> for checking text block text is on or off i created DispatcherTimer (Suggest me anyother way if which can check Text block text)
if textblock text is ON then NextStoryBoardIn.Begin(); should begin, if textblock text is OFF then PrevStoryBoardOut.Begin(); should begin. so i done this way:
DispatcherTimer timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(0) }; timer.Tick += delegate (object sender, object e) { if(BindedTextBlock.Text.Equals("On")) { PrevStoryBoardIn.Begin(); } else if(BindedTextBlock.Text.Equals("Off")) { PrevStoryBoardOut.Begin(); } }; timer.Start(); it works fine but storyboard triggers continuously, it should begin once. and if i write
if(BindedTextBlock.Text.Equals("On")) { PrevStoryBoardIn.Begin(); } else if(BindedTextBlock.Text.Equals("Off")) { PrevStoryBoardOut.Begin(); } timer.Stop(); then it will never check text block text again even if text block text if updated.
Update
if any one intrested in view Xaml codes for testing purpose , so i shared some sample of my xaml
<Page.Resources> <Storyboard x:Name="PrevStoryBoardIn"> <DoubleAnimation Storyboard.TargetName="AppearStackPanel" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:1"/> </Storyboard> <Storyboard x:Name="PrevStoryBoardOut"> <DoubleAnimation Storyboard.TargetName="AppearStackPanel" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:1"/> </Storyboard> </Page.Resources> <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <TextBlock x:Name="DogWatcherTextBlock" Height="50" Width="100" VerticalAlignment="Top"/> <StackPanel x:Name="AppearStackPanel" BorderThickness="1" BorderBrush="Crimson" Height="150" Width="150" Opacity="0" HorizontalAlignment="Center" VerticalAlignment="Center"> <!-- My Items --> </StackPanel> </Grid>
TextBlocktext?