2017-12-18 308 views
-2

我在WPF中有一个按钮,当按下按钮时,它会产生一个外部效果。然而,当按钮没有被按下时,效果发生,只有按下按钮时,我会如何使效果发生?WPF - 按下按钮时的外部效果

这是我的XAML:

<Button.Effect> 
    <DropShadowEffect 
    BlurRadius="20" ShadowDepth="0" Color="DarkBlue"> 
    </DropShadowEffect> 
</Button.Effect> 


</Button> 

这是我编辑的代码:

<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="147,131,0,0" VerticalAlignment="Top" Width="75" PreviewMouseDown="button_PreviewMouseDown"> 

      <Style x:Name="Triggers" TargetType ="Button"> 
       <Style.Triggers> 
        <Trigger Property="IsPressed" Value="true"> 
         <Button.Effect> 
          <DropShadowEffect 
      BlurRadius="20" ShadowDepth="0" Color="DarkBlue"> 
          </DropShadowEffect> 
         </Button.Effect> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 


     </Button> 

谁能告诉我,为什么它不工作?

编辑:

<menu:HomeButton x:Name="BtnHome" PreviewMouseDown="BtnHome_PreviewMouseDown" TouchDown="BtnHome_TouchDown" > 
       <Button.Style> 
        <Style TargetType="Button"> 
         <Style.Triggers> 
          <Trigger Property="IsPressed" Value="true"> 
           <Setter Property="Effect"> 
            <Setter.Value> 

             <DropShadowEffect 
     BlurRadius="20" ShadowDepth="0" Color="DarkBlue"/> 
            </Setter.Value> 
           </Setter> 


          </Trigger> 
         </Style.Triggers> 
        </Style> 
       </Button.Style> 
      </menu:HomeButton> 
+0

你想让它更改按压持续时间,还是你想让它保持开启/关闭状态? –

+0

从片段中我相信你已经直接添加了效果,这意味着它总是会有效果。你已经在触发器中添加了这个代码,例如EventTrigger。查看示例http://www.tutorialspoint.com/wpf/wpf_triggers.htm – AsitK

+0

我只希望在按下按钮时发生效果。我尝试添加属性,但它不起作用 –

回答

2

可以使用Style属性和触发IsPressed

<Button Content="Button"> 
    <Button.Style> 
     <Style TargetType="Button"> 
      <Style.Triggers> 
       <Trigger Property="IsPressed" Value="True"> 
        <Setter Property="Effect"> 
         <Setter.Value> 
          <DropShadowEffect BlurRadius="20" ShadowDepth="0" Color="DarkBlue"/> 
         </Setter.Value> 
        </Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

借鉴https://stackoverflow.com/a/46279626/6741868

+0

你可以看看我编辑的代码:它是一样的,但不起作用 –

+0

嗯,我能想到的唯一区别是'true'改为'True',你可以试试看它是否有效。如果没有,是否出现错误或按下时不显示阴影? –

+0

样式元素应该放在中,而不是像CookiMonster和中的值那样引导孩子,如Keyur Patel所示 – AsitK