c# - 在 ControlTemplate 中干净地跳过情节提要
问题描述
我有一个定义 ControlTemplate 的 ToggleButton 样式。我的 ToggleButton 在更改状态时是动画的,但是当我导航到新页面时我不希望它动画。因此,我使用 SkipStoryboardToFill 在 Loaded 事件上添加了一个 EventTrigger 以避免这种行为,它可以满足我的要求。
我现在唯一的问题是,当我添加一个新的 ToggleButton 时,它会尝试跳过尚未启动的情节提要,生成动画警告(“无法执行操作,因为指定的情节提要从未应用于此对象以进行交互式控制。 ") 这似乎会影响我的应用程序的性能。
我可能可以解决这个问题,但我宁愿解决实际问题。有没有办法在我的 EventTrigger 中添加条件?
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="ToggleButton.Loaded">
<SkipStoryboardToFill BeginStoryboardName="checkedSB" />
<SkipStoryboardToFill BeginStoryboardName="uncheckedSB" />
</EventTrigger>
<DataTrigger Binding="{Binding IsChecked, RelativeSource={RelativeSource Self}}"
Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard Name="checkedSB">
<Storyboard Storyboard.TargetName="Ellipse"
Storyboard.TargetProperty="Margin">
<ThicknessAnimation To="20 1 2 1" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard Name="uncheckedSB">
<Storyboard Storyboard.TargetName="Ellipse"
Storyboard.TargetProperty="Margin">
<ThicknessAnimation To="2 1 2 1" Duration="0:0:0.1"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</ControlTemplate.Triggers>
解决方案
有没有办法在我的 EventTrigger 中添加条件?
简短的回答:没有。
EventTrigger
引发相应事件时始终适用。
如果您想有条件地触发动画,您应该切换到使用 aMultiDataTrigger
或以编程方式实现动画。
推荐阅读
- django - 如何使用 Django 生成 CSV 文件(动态内容)
- pandas - Pandas - Groupby 占小计的百分比
- highcharts - highcharts 注释模块 addAnnotations 错误
- erlang - 节点命名问题
- paraview - paraview 中 2D 流线上的箭头
- python - 如何使用 python 请求、BeautifulSoup 和/或 scrapy 或 selenium 抓取混淆的网页内容
- python - 如何在 2 个熊猫系列中找到相同的条目但区分大小写
- c++ - 如何从 C++ 中的 char 指针初始化 char 数组?
- docker - docker Golang sdk中是否有相当于`ContainerExecCreate`的k8s?
- typescript - Testcafe:出现错误:无法隐式解析测试运行