2013-02-22 52 views
0

一個可以編輯前景和背景等等的按鈕的默認狀態沒有混合只使用屬性窗格或代碼,但它是可以編輯其他狀態的顏色沒有混合?編輯按鈕沒有混合的視覺狀態

例如,我想要的只是在「鼠標懸停」上變成灰色的按鈕。任何我在Stack Overflow或Intertubes上看到的使用Blend。我想沒有它就做。可能嗎?

回答

2

一個簡單的方法是使用Style觸發器。

<Style x:Key="HoverButtonStyle" TargetType="{x:Type Button}"> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="Background" Value="Gray"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

樣式在您的資源中定義。然後當你在XAML定義按鈕,您所分配的風格,就像這樣:

<Button x:Name="MyButton" Style="{DynamicResource HoverButtonStyle}"/> 

這種風格會改變Background刷你的Button當鼠標移動到它。觸發器可以做很多更高級的事情,但這是一個非常簡單的例子。如果你的谷歌WPF風格觸發器,你會發現很多例子,包括this one這是非常徹底的。

還有其他的方法可以做到這一點,例如使用VisualStateManager,如所描述here,但是如果你只是想改變Background上懸停,一種風格的觸發可能是最簡單的方式。

+0

嘿Brian!很高興再次見到你。是的這是有道理的,但你怎麼知道一個屬性是「可觸發的」(可用於觸發器)? – 2013-02-22 18:26:35

+0

嗨@IsaiahNelson,很高興見到你。我相信任何'DependencyProperty'都可以作爲'Trigger'的'Property'條件。如果你有多個標準,你可以使用'MultiTrigger'。至於在Trigger中可以改變什麼,它就像一個'Style'設置器,所以你可以在'Style'中分配任何屬性值。 – 2013-02-22 18:31:39