如何在WPF 4.0中创建发光的TextBox?

时间:2012-06-10 18:16:43

标签: c# wpf xaml animation

我正在尝试创建一个文本框,在聚焦时会发光。

到目前为止,我见过的所有关于如何执行此操作的示例均基于OuterGlowBitmapEffect,并且看起来是does not work in .net 4

第二篇文章中的建议是使用模糊效果。我不知道如何使用模糊来使对象的外层发光而不会扭曲对象的内部内容。

最终,我希望创建一个文本框,在聚焦时会显示发光动画,并且在控制失去焦点后,发光会慢慢(1-2秒)消失。

有关在wpf 4.0中执行此操作的最佳方法的任何想法吗?

2 个答案:

答案 0 :(得分:10)

您可以尝试使用DropShadowEffect获得体面的“Glow-Effect”。这是一个例子

<强>更新即可。一个TextBox在聚焦时开始“发光”,当它失去焦点时,“发光”会慢慢消失两秒钟

enter image description here

<TextBox Text="Test">
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Setter Property="Effect">
                <Setter.Value>
                    <DropShadowEffect ShadowDepth="0"
                                      Color="Gold"
                                      Opacity="0"
                                      BlurRadius="8"/>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation To="1.0"
                                                 Storyboard.TargetProperty="(Effect).Opacity"
                                                 Duration="00:00:00"/>
                            </Storyboard>                                    
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                    <Trigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation To="0.0"
                                                 Storyboard.TargetProperty="(Effect).Opacity"
                                                 Duration="00:00:02"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.ExitActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

答案 1 :(得分:0)

看一看 http://wpfthemes.codeplex.com/ 对于很多好的wpf主题创意。特别是,请查看Bureau Black中文本框的主题。我认为你想要的实际上是他们用于'mouseover'属性的东西,但是应该很容易将它改为聚焦属性。