2014-12-04 159 views
2

我曾尝试以下方法更新按钮的游标时IsEnabledFalseWPF更改按钮样式禁用时更改光标?

<Button Content="Test" IsEnabled="False"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Style.Triggers> 
       <Trigger Property="IsEnabled" Value="False"> 
        <Setter Property="Cursor" Value="No"></Setter> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 

然而该按钮,光标不会改变......如果我试着去改变其他属性,如背景然而,这将工作得很好...有人可以解释为什么这不工作?

回答

4

当元素被禁用时,鼠标悬停事件无法触发。游标将根据鼠标移动而改变。要解决这个问题,将另一个元素称为矩形,并在禁用按钮时更改其光标。通过使其不透明度为“0”来隐藏矩形。 (No Visibility =“Collapsed”)。

<Grid> 
     <Button Content="Blah" 
       x:Name="btn" 
       IsEnabled="False" /> 
     <Rectangle Opacity="0" 
        Fill="Transparent"> 
      <Rectangle.Style> 
       <Style TargetType="Rectangle"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ElementName=btn, Path=IsEnabled}" 
            Value="False"> 
          <Setter Property="Cursor" 
            Value="No" /> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Rectangle.Style> 
     </Rectangle> 
    </Grid> 
+0

哈哈我没有别想的事实,鼠标事件将禁用时,停止感谢您的提醒我也许应该测试的东西之前,我在别人键入它大声笑。 +1 – 2014-12-04 02:33:40

+1

矩形不在Button的内容中。矩形和按钮,都在同一个容器(网格)。 – Jawahar 2014-12-04 05:06:46

+0

嗯,是的,我只是错过了按钮标签自闭门抱歉。 – 2015-04-02 19:07:11