WPF Flash A Border 但不是孩子

Posted

技术标签:

【中文标题】WPF Flash A Border 但不是孩子【英文标题】:WPF Flash A Border But not the Children 【发布时间】:2021-10-30 06:34:13 【问题描述】:

关于如何闪烁边框而不是里面的孩子的任何想法?

我可以像这样闪烁边框:

<UserControl.Resources>
    <Storyboard x:Key="valueFlasher" RepeatBehavior="Forever">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="outline">
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.2"/>
            <EasingDoubleKeyFrame KeyTime="0:0:2" Value="1"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</UserControl.Resources>

<Border BorderBrush="Black" BorderThickness="3" CornerRadius="7" x:Name="outline">
   <!--children--> 
</Border>

但这会改变嵌套在里面的所有东西的不透明度。

我在想这样的事情:

<Border BorderThickness="3" CornerRadius="7">
    <Border.BorderBrush>
        <SolidColorBrush Color="Black" x:Name="outline"/>
    </Border.BorderBrush>
    <!--children-->
</Border>

但它似乎也不起作用。也许我的故事板找不到“大纲”,因为它是嵌套的?

提前致谢!

【问题讨论】:

【参考方案1】:

属性路径(UIElement.Opacity) 对 SolidColorBrush 无效,因为它不是 UIElement。


改为使用BorderBrush.Opacity

<Storyboard x:Key="valueFlasher" RepeatBehavior="Forever">
    <DoubleAnimationUsingKeyFrames
        Storyboard.TargetProperty="BorderBrush.Opacity" 
        Storyboard.TargetName="outline">

        <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.2"/>
        <EasingDoubleKeyFrame KeyTime="0:0:2" Value="1"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

带有这样的边框:

<Border x:Name="outline" BorderThickness="3" CornerRadius="7">
    <Border.BorderBrush>
        <SolidColorBrush Color="Black"/>
    </Border.BorderBrush>
    <!--children-->
</Border>

或者只是Opacity

<Storyboard x:Key="valueFlasher" RepeatBehavior="Forever">
    <DoubleAnimationUsingKeyFrames
        Storyboard.TargetProperty="Opacity" 
        Storyboard.TargetName="outline">

        <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.2"/>
        <EasingDoubleKeyFrame KeyTime="0:0:2" Value="1"/>
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

在 SolidColorBrush 上设置 x:Name

<Border BorderThickness="3" CornerRadius="7">
    <Border.BorderBrush>
        <SolidColorBrush x:Name="outline" Color="Black"/>
    </Border.BorderBrush>
    <!--children-->
</Border>

【讨论】:

一旦我看到它,这是一个明显的修复.. 谢谢! :)

以上是关于WPF Flash A Border 但不是孩子的主要内容,如果未能解决你的问题,请参考以下文章

写 给 我 的 孩 子

WPF,制作填空题

小孩子数学漫游指南

《杀死一只知更鸟》一本心灵成长之书,教会孩zi善待世界

《杀死一只知更鸟》一本心灵成长之书,教会孩zi善待世界

《杀死一只知更鸟》一本心灵成长之书,教会孩zi善待世界