wpf - 使用 ColorAnimation 更改 StackPanel 背景颜色

标签 wpf xaml background stackpanel coloranimation

嗯,我正在尝试使用 ColorAnimation 更改 DataTemplate 中 StackPanel 的背景颜色:

    <DataTemplate DataType="{x:Type logic:Sensor}">
        <StackPanel Name="SensorPanel" MouseDown="SensorPanel_MouseDown">
        </StackPanel>
        <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding Status}" Value="0">
                <!--<Setter TargetName="SensorPanel" Property="Background" Value="LawnGreen" />-->

                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation 
                                Storyboard.TargetName="SensorPanel" 
                                Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
                                To="LawnGreen" Duration="0:0:0.25" AutoReverse="True" RepeatBehavior="4">
                            </ColorAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>

            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>

没有编译时错误。但是,当我运行此命令时,会引发 InvalidOperationException:“'Background' 属性未指向路径 '(0).(1)' 中的 DependencyObject。”

什么? :D

最佳答案

你的代码非常适合我。我只是做了一些小的修改。

    <DataTemplate DataType="{x:Type Model:Sensor}">
        <StackPanel Name="SensorPanel" Background="LightBlue" Width="100" Margin="5">
            <TextBlock Text="{Binding Name}"/>
            <ToggleButton Margin="2" IsChecked="{Binding IsChecked}" Content="Set status=0" />
        </StackPanel>
      <DataTemplate.Triggers>
            <DataTrigger Binding="{Binding Status}" Value="0">
                <!--<Setter TargetName="SensorPanel" Property="Background" Value="LawnGreen" />-->

                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation 
                            Storyboard.TargetName="SensorPanel" 
                            Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
                            To="LawnGreen" Duration="0:0:0.25" AutoReverse="True" RepeatBehavior="4">
                            </ColorAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>

            </DataTrigger>
        </DataTemplate.Triggers>
    </DataTemplate>

    <ListBox ItemsSource="{Binding Sensors}" />

关于wpf - 使用 ColorAnimation 更改 StackPanel 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9748432/

相关文章:

html - 背景图100%固定位置问题

c# - 将枚举值绑定(bind)到标签 XAML

wpf - 让 WPF Tabcontrol 高度假设最大项目的高度?

c# - 两个 C# exe 之间的通信

javascript - 使用 jQuery 淡入淡出背景图像?

html - 如何在每一侧都有相同的背景图像?

c# - WPF TreeView 更新子项

c# - 在 ProgressBar 控件模板中为 WPF ImageBrush 设置动画

wpf - 如何在 XAML 中找到控件的默认值?

wpf - 如何绑定(bind)到非 ObservableCollection?