如果条件为真,我想通过绑定更改网格背景 我正在使用MVVM light framework。
<Grid.Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding SuccessBooked, UpdateSourceTrigger=PropertyChanged}"
Value="True">
<!--Setter Property="Background" Value="LimeGreen" />-->
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation To="LimeGreen"
Storyboard.TargetName="ActualWeightBg"
Storyboard.TargetProperty="Background"
FillBehavior="Stop"
Duration="0:0:12"/>
<!--<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="0.0" To="1.0" Duration="0:0:15"/>-->
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding LowerBooked, UpdateSourceTrigger=PropertyChanged}"
Value="True">
<Setter Property="Background" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding HigherBooked, UpdateSourceTrigger=PropertyChanged}"
Value="True">
<Setter Property="Background" Value="DarkOrange" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
编译器抱怨:
如果我删除Storyboard.TargetName="ActualWeightBg"
:
<ColorAnimation To="LimeGreen"
Storyboard.TargetProperty="Background"
FillBehavior="Stop"
Duration="0:0:12"/>
我得到了这个例外:
抛出异常:&#39; System.InvalidOperationException&#39;在PresentationFramework.dll
中
我希望背景颜色会改变5秒,然后它会变回标准颜色。
更新
因此,如果未设置背景颜色,则会抛出错误:
无法解析属性路径中的所有属性引用 &#39; Background.Color&#39 ;.验证适用的对象是否支持 属性。
然后它将按预期工作。
如何设置动画背景颜色,而不设置背景颜色。 这是一个用户控件。
答案 0 :(得分:5)
首先,StyleTriggers通常不支持TargetNames。
仅AFAIK TemplateTriggers支持它们。
您的DataTrigger应如下所示。
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="Background.Color" To="LimeGreen"
FillBehavior="Stop" AutoReverse="True" Duration="0:0:5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
注意Storyboard.TargetProperty="Background.Color"
。你的TimeSpan太高了。另一件事是将AutoReverse
设置为true。
修改强>
要使此Trigger工作,在Grid的样式中有一个初始背景设置。
<Style TargetType="Grid">
<Setter Property="Background" Value="Red"/>