gpt4 book ai didi

wpf - 如何让aTextBlock只在ViewModel的依赖属性有一定值时才闪烁?

转载 作者:行者123 更新时间:2023-12-02 22:35:40 26 4
gpt4 key购买 nike

我有一个 View 模型对象,它有一个名为 IsSearching 的依赖属性;它是一个 bool。我的表单有一个 TextBlock 控件,用于显示匹配行数。绑定(bind)到 TextBlock 的 Text 属性的属性是 int? 类型。在搜索开始时,该属性设置为 null。绑定(bind)中的转换器将其显示为“--”。

我希望“--”字符串在 IsSearching 属性为 true 时闪烁,我不希望它在 false< 时闪烁。这是我到目前为止所拥有的:

Storyboard:

<Storyboard x:Key="FlashTextBlockText">
<ObjectAnimationUsingKeyFrames RepeatBehavior="Forever" Storyboard.TargetProperty="(UIElement.Visibility)">
<DiscreteObjectKeyFrame KeyTime="0:0:0.5" Value="{x:Static Visibility.Hidden}" />
<DiscreteObjectKeyFrame KeyTime="0:0:1" Value="{x:Static Visibility.Visible}" />
</ObjectAnimationUsingKeyFrames>
</Storyboard>

仅用于 TextBlocks 的命名 Style:

<Style BasedOn="{StaticResource {x:Type TextBlock}}" x:Key="FlashBlockText" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsSearching}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource FlashTextBlockText}" />
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>

IsSearching 属性最初为 false。当用户点击搜索 Button 时,它被设置为 true 并且闪烁开始。但它不会停止闪烁。

IsSearching 设置回 false 时,如何让 StoryBoard 停止?

托尼

最佳答案

对属性值进行操作的触发器有两个包含操作的集合:

  • EnterActions:此集合中的操作在触发器本身被激活时被激活(在您的示例中,当 IsSearching 变为真时)

  • ExitActions:当触发器停用时(IsSearching 变为 false),此处的操作将被激活

因此,您应该通过在 ExitActions 集合中添加 StopStoryboard 操作来停止 Storyboard。

无需在显式检查属性是否已变为 false 的地方创建新的 DataTrigger。

<DataTrigger Binding="{Binding Path=IsSearching}" Value="True"> 
<DataTrigger.EnterActions>
<BeginStoryboard Name="storyboard" Storyboard="{StaticResource FlashTextBlockText}" />
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="storyboard" />
</DataTrigger.ExitActions>
</DataTrigger>

关于wpf - 如何让aTextBlock只在ViewModel的依赖属性有一定值时才闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11473636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com