c# - WPF:使用数据触发器/ bool 值重新启动 Storyboard?

标签 c# wpf xaml

我有一个 DataTrigger,它根据 bool 值运行 Storyboard

<DataTrigger Binding="{Binding Path=IsValid}" Value="True">
  <DataTrigger.EnterActions>
       <BeginStoryboard>
              <Storyboard>
                 ...                                
              </Storyboard>
       </BeginStoryboard>
  </DataTrigger.EnterActions>
</DataTrigger>

因此,当 IsValid = true 时,我的 Storyboard就会运行。这工作正常。但问题是: 当我的 IsValid = true 时,我希望我的 Storyboard重新运行。我的 IsValid 看起来像这样:

private bool _isValid = false;
public bool IsValid
{
      set {
      _isValid = value;
      OnPropertyChanged("IsValid")
      }
}

我知道我的 Storyboard必然是真实的,但是有没有办法重新启动该死的东西并让 Storyboard在每次我在 ViewModel 代码中使用 IsValid = true 时重新启动?

最佳答案

问题是你的 Storyboard永远不会停止。您需要为 BeginStoryboard 命名,并添加 ExitActions 部分:

<DataTrigger Binding="{Binding Path=IsValid}" Value="True">
  <DataTrigger.EnterActions>
       <BeginStoryboard Name="sb">
              <Storyboard>
                 ...                                
              </Storyboard>
       </BeginStoryboard>
  </DataTrigger.EnterActions>
  <DataTrigger.ExitActions>
       <StopStoryboard BeginStoryboardName="sb" />
  </DataTrigger.ExitActions>
</DataTrigger>

关于c# - WPF:使用数据触发器/ bool 值重新启动 Storyboard?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237937/

相关文章:

c# - WPF/Xaml - 获取动态元素的高度

c# - 如何在 WPF 的 tabItem 中控制焦点

wpf - 如何正确更改资源字典

c# - 在 ASP.NET Core 依赖注入(inject)中使用工厂模式

c# - 避免大型交换机问题的良好做法

c# - 静态方法线程安全

c# - 在 X 轴中将 CartesianChart 与 DateAxis 和 DateModel 结合使用

c# - 单击按钮更新 wpf 数据网格

c# - 分层架构中的 Entity Framework

c# - 每个类实例的唯一日志文件