我有一個簡單的問題。使用IsPressed觸發器,我希望能夠將按鈕的背景顏色設置爲默認灰色以外的其他顏色。這裏是按鈕看起來如果沒有按它
爲什麼當IsPressed爲true時按鈕背景默認爲灰色
喜歡什麼,這裏是個什麼樣子點擊
下面是按鈕觸發時等等。我知道觸發器是正確觸發的,因爲點擊時按鈕邊緣的發光效果。我也知道這個筆刷是正確的,因爲我試着將它作爲背景畫筆來看看它的樣子。
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/>
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
</Trigger>
<!-- This is the trigger which is working but the background color wont change -->
<Trigger Property="IsPressed" Value="True">
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
<Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" />
</Trigger>
</Style.Triggers>
以下是整個樣式,如您所見,它是應用於應用程序中所有按鈕的默認樣式。
<Style TargetType="Button">
<Setter Property="Background" Value="{DynamicResource ButtonBrush}" />
<Setter Property="Foreground" Value="Black" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/>
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
<Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" />
</Trigger>
</Style.Triggers>
</Style>
這裏是最終的解決方案(感謝所有誰幫助)
創建一個通用按鈕控件模板,並做一些數據綁定:
<ControlTemplate TargetType ="Button" x:Key="ButtonControlTemplate"> <Border Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" CornerRadius="3"> <Grid> <ContentPresenter ContentSource="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/> </Grid> </Border> </ControlTemplate>
將控件樣式添加到樣式中:
<Style TargetType="Button"> <Setter Property="Background" Value="{DynamicResource ButtonBrush}" /> <Setter Property="Foreground" Value="Black" /> <Setter Property="Template" Value="{DynamicResource ButtonControlTemplate}" /> <Setter Property="BorderThickness" Value="1" /> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/> <Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/> <Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" /> </Trigger> </Style.Triggers> </Style>
注:了borderThickness,缺省爲1,否則它不顯示
你能分享模板XAML嗎? – 2010-04-27 03:46:50
它不是模板的一部分,它是風格的一部分。我已經添加了完整的樣式,讓你看看 – TerrorAustralis 2010-04-27 06:58:40
我認爲Kishore意味着刷子 – benPearce 2010-04-27 07:08:52