我正在尝试动画网格上的背景颜色来改变,一旦事件发生,但我无法让它工作,我可以让它立即改变颜色(通过数据触发器),但是一旦我尝试在其中引入动画,然后我无法使其工作(动画似乎没有生效)。
这是我正在使用的当前XAML(虽然我尝试了各种变体,但无法将其设置为动画):
<DataTrigger Binding="{Binding ElementName=me, Path=Viewed}" Value="False">
<Setter Property="Background" Value="LightYellow" />
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="00:00:02" To="White" Storyboard.TargetProperty="(Grid.Background).(SolidColorBrush.Color)"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
<!--
<DataTrigger Binding="{Binding ElementName=me, Path=Viewed}" Value="True">
<Setter Property="Background" Value="White" />
</DataTrigger>
-->
其中Viewed是我的Control上的依赖属性(bool)。任何正确方向的提示都将受到赞赏。我也尝试将它设置为一个引发事件的EventTrigger,当bool切换为true时发生。
答案 0 :(得分:1)
感谢Clemens的帮助,找出了我需要做的事情:
<SolidColorBrush x:Key="GridColourBrush" Color="LightYellow" />
<Style x:Key="GridStyle" TargetType="Grid">
<Setter Property="Background" Value="White" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=me, Path=Viewed}" Value="False">
<Setter Property="Background" Value="{StaticResource GridColourBrush}" />
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="00:00:02" To="White" Storyboard.TargetProperty="(Grid.Background).(SolidColorBrush.Color)"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
<!-- snipped stuff -->
<Grid MinWidth="525" x:Name="ContainerGrid" Style="{StaticResource GridStyle}" Background="{StaticResource GridColourBrush}" />
因此默认情况下将背景设置为白色,然后如果DP bool为false,则将背景更改为静态纯色画笔,然后我可以通过退出操作设置动画。
答案 1 :(得分:0)
我的意思只是代替
<Grid Background="LightYellow">
</Grid>
你必须写
<Grid>
<Grid.Background>
<SolidColorBrush Color="LightYellow" />
</Grid.Background>
</Grid>
无需额外资源。