绑定刷新动画上的所有绑定控件

本文关键字:绑定 控件 刷新 动画 | 更新日期: 2023-09-27 17:58:22

使用等颜色绑定时

Background="{Binding Design.LeftBarColor}"

并执行类似的动画

<DoubleAnimation From="1" To="0.5" Storyboard.TargetName="appName"
    Storyboard.TargetProperty="(Label.Background).(SolidColorBrush.Opacity)"
    Duration="0:0:0.25"/>

绑定到"Design.LeftBarColor"的所有控件都将刷新。但我只想刷新标签的(appName)背景颜色。我只是尝试更改绑定模式,但没有成功。我做错了什么?

绑定刷新动画上的所有绑定控件

您可以为每个标签创建一个新的背景笔刷,并将新笔刷的颜色绑定到Design.LeftBarColor.Color,而不是直接使用Design.LeftBarColor笔刷作为标签的背景。

<Label Name="appName" ...>
    <Label.Background>
        <SolidColorBrush Color="{Binding Design.LeftBarColor.Color}"/>
    </Label.Background>
   ...
</Label>

不确定我对你试图做的事情是否正确。我想说,如果你想淡出动画上的控件,不要针对笔刷的不透明度。在标签顶部放置一个边框控件,然后修改边框的不透明度。

此处的示例代码:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <SolidColorBrush x:Key="MyBrush" Color="Red"/>
    </Window.Resources>
    <Grid>
        <Border Name="Container">
            <Label Background="{StaticResource MyBrush}">
                <Label.Triggers>
                    <EventTrigger RoutedEvent="Rectangle.Loaded">
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation
            Storyboard.TargetName="Container" 
            Storyboard.TargetProperty="Opacity"
            From="1.0" To="0.0" Duration="0:0:5" 
            AutoReverse="True" RepeatBehavior="Forever" />
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                </Label.Triggers>
                Lorem ipsum
            </Label>
        </Border>
    </Grid>
</Window>