C# 如何仅从边界外部实现发光效果?

C# 如何仅从边界外部实现发光效果?,c#,wpf,border,C#,Wpf,Border,我想要的只是按钮边框外部的阴影,而不是内部的阴影。有没有一种按钮式的方法 找到了我需要的东西,但阴影来自边界内外。 我试图在DropShadowEffectproperties和Borderproperties之间搜索,或者在internet上搜索,但没有找到任何内容 <Style x:Key="GlowingBorder" TargetType="Button"> <Setter Property="Template"> <Setter.

我想要的只是按钮边框外部的阴影,而不是内部的阴影。有没有一种按钮式的方法

找到了我需要的东西,但阴影来自边界内外。 我试图在
DropShadowEffect
properties和
Border
properties之间搜索,或者在internet上搜索,但没有找到任何内容

<Style x:Key="GlowingBorder" TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border Margin="10" Background="Transparent"
                        BorderBrush="#171e25" BorderThickness="1" Opacity="1.0"
                        CornerRadius="{TemplateBinding Border.CornerRadius}">
                    <Border.Effect>
                        <DropShadowEffect ShadowDepth="0"
                                          Color="#72f4aa"
                                          Opacity="1"
                                          BlurRadius="6"/>
                    </Border.Effect>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

预期:外部阴影,边界内部无阴影。用边框颜色填充按钮。 当前结果:从边界的内部和外部阴影<代码>前景和
背景
中的属性
样式
无效,按钮的
上下文
也不显示。不知道为什么


如何修复它?

我还没有测试过,但我假设您的按钮背景是透明的。通常情况下,阴影仅在外部,但由于内部是透明的,因此可以通过按钮看到,使其在内部发光

编辑:显然,您可以在效果中添加填充,这可能会解决您遇到的问题:

在我链接的网站上找到此链接:


像这样的东西怎么样:

<Style x:Key="GlowingBorder" TargetType="Button">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Grid>
                   <Border Margin="10" Background="Transparent"
                           BorderBrush="#171e25" BorderThickness="1" Opacity="1.0"
                           CornerRadius="{TemplateBinding Border.CornerRadius}">
                       <Border.Effect>
                           <DropShadowEffect ShadowDepth="0"
                                          Color="#72f4aa"
                                          Opacity="1"
                                          BlurRadius="6"/>
                       </Border.Effect>
                   </Border>
                   <Border BorderBrush="#171e25" BorderThickness="1" 
                       Background="{TemplateBinding Background}" 
                       CornerRadius="{TemplateBinding Border.CornerRadius}" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>


这应该适用于所有没有透明背景的按钮,因为您在发光的按钮上放置了另一个边框控件,从而覆盖了内部发光。

是的,您是对的。谢谢将
Border
Background
指定给任何颜色都有帮助,但现在还有另一个问题:
Border
覆盖
按钮的
上下文(即使
Background
是透明的
)。到目前为止我还没有找到解决办法。有什么想法吗?听起来可能很混乱,但也许你的“按钮内有边框”而不是“按钮内有边框”。我的意思是边框应该是父元素,而不是按钮。这样做的原因是,您还可以(例如)创建一个带有边框的正方形,其中有3个按钮。像这样的