Wpf 在文本块可见性上触发情节提要。可见
我是WPF和XAML的新手,如果这是一个愚蠢的问题,我很抱歉: 我试图在一个文本块上启动一个故事板来改变文本。我想在文本块可见时启动此动画。它看起来是文本块内部唯一可以触发的事件。触发器括号是EventTrigger。如果是这样,据我所知,EventTrigger需要路由事件,但IsVisibilityChanged不是。既然我不能用它,那我该怎么做呢 我附上了一个不起作用(无法编译)的代码示例,只是为了说明我正在尝试做什么:Wpf 在文本块可见性上触发情节提要。可见,wpf,xaml,Wpf,Xaml,我是WPF和XAML的新手,如果这是一个愚蠢的问题,我很抱歉: 我试图在一个文本块上启动一个故事板来改变文本。我想在文本块可见时启动此动画。它看起来是文本块内部唯一可以触发的事件。触发器括号是EventTrigger。如果是这样,据我所知,EventTrigger需要路由事件,但IsVisibilityChanged不是。既然我不能用它,那我该怎么做呢 我附上了一个不起作用(无法编译)的代码示例,只是为了说明我正在尝试做什么: <TextBlock Foreground="LightGra
<TextBlock Foreground="LightGray" Text="Payfast Running" Name="AnimatedTextBlock">
<TextBlock.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<StringAnimationUsingKeyFrames
Storyboard.TargetProperty="(TextBlock.Text)"
Duration="0:0:1.5"
Storyboard.TargetName="AnimatedTextBlock"
RepeatBehavior="Forever">
<DiscreteStringKeyFrame Value="Payfast Running" KeyTime="0:0:0"/>
<DiscreteStringKeyFrame Value="Payfast Running." KeyTime="0:0:0:5"/>
<DiscreteStringKeyFrame Value="Payfast Running.." KeyTime="0:0:1"/>
<DiscreteStringKeyFrame Value="Payfast Running..." KeyTime="0:0:1:5"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</TextBlock.Triggers>
</TextBlock>
最后,如果可能的话,我需要在标记中而不是代码隐藏中执行此操作。我希望在文本块可见时启动此动画
您可以将TextBlock
的Visibility
绑定到boolean
属性(请注意,您必须添加一个用于布尔值到可见性转换的资源):
通过执行此操作,当ReadyToPlay
变为true
时,TextBlock
将变为可见,情节提要将同时开始。我想在TextBlock变为可见时启动此动画
您可以将TextBlock
的Visibility
绑定到boolean
属性(请注意,您必须添加一个用于布尔值到可见性转换的资源):
这样,当ReadyToPlay
变为true
时,文本块
将可见,情节提要
将同时开始。您可能需要将所有内容包装成一种样式
<TextBlock Foreground="LightGray" Text="Payfast Running" Name="AnimatedTextBlock">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Visibility, RelativeSource={RelativeSource TemplatedParent}}" Value="Visible">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<StringAnimationUsingKeyFrames
Storyboard.TargetProperty="(TextBlock.Text)"
Duration="0:0:1.5"
Storyboard.TargetName="AnimatedTextBlock"
RepeatBehavior="Forever">
<DiscreteStringKeyFrame Value="Payfast Running" KeyTime="0:0:0"/>
<DiscreteStringKeyFrame Value="Payfast Running." KeyTime="0:0:0:5"/>
<DiscreteStringKeyFrame Value="Payfast Running.." KeyTime="0:0:1"/>
<DiscreteStringKeyFrame Value="Payfast Running..." KeyTime="0:0:1:5"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
您可能需要将所有内容包装成一种样式
<TextBlock Foreground="LightGray" Text="Payfast Running" Name="AnimatedTextBlock">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Visibility, RelativeSource={RelativeSource TemplatedParent}}" Value="Visible">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<StringAnimationUsingKeyFrames
Storyboard.TargetProperty="(TextBlock.Text)"
Duration="0:0:1.5"
Storyboard.TargetName="AnimatedTextBlock"
RepeatBehavior="Forever">
<DiscreteStringKeyFrame Value="Payfast Running" KeyTime="0:0:0"/>
<DiscreteStringKeyFrame Value="Payfast Running." KeyTime="0:0:0:5"/>
<DiscreteStringKeyFrame Value="Payfast Running.." KeyTime="0:0:1"/>
<DiscreteStringKeyFrame Value="Payfast Running..." KeyTime="0:0:1:5"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
嗨,谢谢你的回答,这让我走上了正确的道路。我缺少的是,我必须像你说的那样用一种风格来包装它。一旦完成了,我就能够使用属性触发器来实现所需的结果。谢谢你的回答,这让我走上了正确的道路。我缺少的是,我必须像你说的那样用一种风格来包装它。一旦完成了,我就能够使用属性触发器来实现所需的结果。非常感谢你的帮助
<TextBlock Foreground="LightGray" Text="Payfast Running" Name="AnimatedTextBlock">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Visibility, RelativeSource={RelativeSource TemplatedParent}}" Value="Visible">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<StringAnimationUsingKeyFrames
Storyboard.TargetProperty="(TextBlock.Text)"
Duration="0:0:1.5"
Storyboard.TargetName="AnimatedTextBlock"
RepeatBehavior="Forever">
<DiscreteStringKeyFrame Value="Payfast Running" KeyTime="0:0:0"/>
<DiscreteStringKeyFrame Value="Payfast Running." KeyTime="0:0:0:5"/>
<DiscreteStringKeyFrame Value="Payfast Running.." KeyTime="0:0:1"/>
<DiscreteStringKeyFrame Value="Payfast Running..." KeyTime="0:0:1:5"/>
</StringAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>