2014-12-04 193 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