我已经创建了一个模板来修改常规的WPF ProgressBar。
一切正常,问题在于启动动画的DataTrigger。 我希望在属性" IsIndeterminate"时触发动画。设置为True。
此示例工作正常==>打开视图时动画正确启动
<ProgressBar Grid.Row="3" Style="{StaticResource DotMoveProgressBar}" IsIndeterminate="TRUE" />
此示例显示DataTrigger:
<Style x:Key="DotMoveProgressBar" TargetType="{x:Type ProgressBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ProgressBar}">
[... "template" ...]
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsIndeterminate}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever">
[...]
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
当我从ViewModel绑定属性时出现问题。
<ProgressBar Grid.Row="3" Style="{StaticResource DotMoveProgressBar}" IsIndeterminate="{Binding IsLoadingData}" />
当我设置&#34; IsLoadingData&#34;在我的ViewModel中为TRUE,动画不会启动。
问题是:
为什么当IsIndeterminatate为&#34; HardCoded&#34;时,anamation正在工作?为TRUE而不是绑定到&#34; IsLoadingData&#34; ?
/!\我已经测试了这些东西:
所以我认为这是一个DataTrigger问题/技巧/...
(除非这是唯一的解决方案,否则我不想玩可见性)
感谢您的帮助!
(请原谅我的英语不好: - /)
更新:感谢KingKing的评论,这是问题的下一步:
我做了什么:
这让我想到了真正的问题: 绑定到按钮的此命令方法工作正常
Public Sub TestFunction()
IsLoadingData = Not IsLoadingData
End Sub
此异步命令方法使DataTrigger无法正确响应
Private Async Sub SelectFileToOpenAsync()
IsLoadingData = True
Await Task.Run(AddressOf LoadFile)
Await GenerateScenario()
End Sub
使用异步方法似乎使DataTrigger无法正常工作