WPF-按钮凹陷效果

时间:2017-12-15 01:02:06

标签: c# wpf visual-studio

我在c#中有一个按钮,我在其中添加了渐变画笔,以便在按下按钮时创建凹陷效果。它的工作原理是按下时增加边框厚度(左上角和顶部)。我无法让它发挥作用。有什么我想念的吗?

我的XAML:

<menu:HomeButton x:Name="BtnHome" MouseDown="BtnHome_MouseDown"  >
                    <menu:HomeButton.Background>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="Black" Offset="0"/>
                            <GradientStop Color="White" Offset="1"/>
                        </LinearGradientBrush>
                    </menu:HomeButton.Background>

我为这个按钮创建了一个事件处理程序(在c#中):

 private void BtnHome_MouseDown(object sender, MouseButtonEventArgs e)
        {
            BtnHome.BorderThickness = new Thickness(5, 5, 5, 5);
        }

所以当我按下按钮时,没有任何反应。我错过了什么?

1 个答案:

答案 0 :(得分:0)

当WPF决定重绘时,与MouseDown路由事件的路由顺序/策略相比可能有些怪癖。使用常规按钮(我假设HomeButton是标准WPF按钮的推导)我无法改变MouseDown上的边框粗细,如您所示。但是,如果我改为使用PreviewMouseDown事件,它就可以工作。

    <Button x:Name="TheButton" PreviewMouseDown="Button_PreviewMouseDown">YOOOO</Button>

   private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    {
        TheButton.BorderThickness = new Thickness(5, 5, 5, 5);
    }