c# - VisualBrush 淡入淡出动画
问题描述
我正在尝试让 VisualBrush 在设置时自动淡入/淡出,但不幸的是它不能正常工作。它没有真正消失,而是立即消失或出现,完全忽略了故事板——或者我试图捕捉错误的事件。
<VisualBrush x:Key="CustomHatchBrush" TileMode="None" Viewport="0,0,100,100" ViewportUnits="Absolute" Viewbox="0,0,100,100" ViewboxUnits="Absolute">
<VisualBrush.Visual>
<Canvas>
<Canvas.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.2" From="0" To="1" Storyboard.TargetProperty="(Canvas.Opacity)" RepeatBehavior="1x" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="FrameworkElement.Unloaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.2" From="1" To="0" Storyboard.TargetProperty="(Canvas.Opacity)" RepeatBehavior="1x" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Canvas.Triggers>
<Rectangle Canvas.Top="0" Canvas.Left="0" Width="100" Height="100" Fill="Orange" />
<Rectangle Canvas.Top="0" Canvas.Left="0" Width="100" Height="100" Fill="{DynamicResource CaretBrush}" />
</Canvas>
</VisualBrush.Visual>
</VisualBrush>
我通常想在 ListBoxItem 的 Template 中使用它作为 BorderBrush,如下所示:
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border x:Name="ca" BorderThickness="3" SnapsToDevicePixels="true" Padding="0">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="4" Background="Transparent" HorizontalAlignment="Center" VerticalAlignment="Center" SnapsToDevicePixels="true" Padding="0">
<ContentPresenter HorizontalAlignment="Stretch" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</Border>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Prop1}" Value="true"/>
<Condition Binding="{Binding Prop2}" Value="true"/>
</MultiDataTrigger.Conditions>
<Setter Property="BorderBrush" TargetName="ca" Value="{DynamicResource CustomHatchBrush}"/>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Prop1}" Value="true"/>
<Condition Binding="{Binding Prop2}" Value="false"/>
</MultiDataTrigger.Conditions>
<Setter Property="BorderBrush" TargetName="ca" Value="{DynamicResource CustomHatchBrush2}"/>
</MultiDataTrigger>
<DataTrigger Binding="{Binding Prop1}" Value="false">
<Setter Property="BorderBrush" TargetName="ca" Value="Transparent"/>
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
我尝试了许多应用情节提要的方法,例如在绑定内部,但它总是立即完成,完全忽略情节提要的持续时间。
我错过了什么?这个控件通常工作得很好(对象有名称并且有多个实例,所以可能会出错),我只是无法创建我想要实现的视觉效果。
解决方案
推荐阅读
- hyperledger-fabric - 在超级账本作曲家设置中使用 kafka 配置
- angular - 如何影响每个元素在 angular5 中改变其行
- javascript - 给定动作“Movies_List”,reducer 返回 undefined
- asp.net - Option Strict 不允许使用 IEnumerable 进行后期绑定
- xml - InnerXml 替换,但只有一次
- javascript - 如何制作可配置的 npm 包
- node.js - 如何将 Node js 输出发送到 HTML 字段值
- asp.net - Asp Core net Kendo ui 无法将十进制值传递给模型
- java - 我们如何在 Java 中为 Windows 10 设置环境变量?
- java - 为什么可以在定义自身之前声明类类型(Java 中)或结构类型(C 中)?