這是對Overriding button background in WPF on Aero的一個後續操作,對次要程度Custom Control Styling/Triggers。自定義控件造型/觸發器第二部分 - 凌駕Aero
在試圖保持ToggleButton的功能,但擺脫按鈕樣式,我遵循上面的第一個鏈接的過程。它基本上作品,儘管改變RenderMouseOver
和RenderPressed
到false
(否則它感應鼠標過度窗口中的任意一個小的修改,而不是隻當過ToggleButton
。
所以現在我的問題是,與在下面的標記中,IsMouseOver
觸發器根本不會改變背景。查看XAML的任何想法?
在附註中,我嘗試使用BitmapEffect
在切換時使字母發光,但無論如何我使用它的設置似乎沒有效果。任何人都知道專門處理這個問題的指南嗎?
<Style TargetType="{x:Type local:TimePicker}">
<Setter Property="Height" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Height}" />
<Setter Property="Width" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Width}" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Border Background="{TemplateBinding Background}"
BorderBrush="Black"
BorderThickness="1">
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="{TemplateBinding VerticalAlignment}">
<ToggleButton VerticalAlignment="{TemplateBinding VerticalAlignment}"
Margin="0"
Background="{TemplateBinding Background}"
BorderBrush="Transparent"
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Hour}">
<ToggleButton.Template>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Aero:ButtonChrome SnapsToDevicePixels="True"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
RenderMouseOver="False"
RenderPressed="False">
<ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
/>
</Aero:ButtonChrome>
</ControlTemplate>
</ToggleButton.Template>
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="Background" Value="LightGray" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Foreground" Value="Red" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="BitmapEffect">
<Setter.Value>
<OuterGlowBitmapEffect GlowColor="Red" GlowSize="30" />
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalAlignment}"
VerticalContentAlignment="{TemplateBinding VerticalAlignment}"
Content=":"/>
<ToggleButton VerticalAlignment="{TemplateBinding VerticalAlignment}"
Margin="0"
Background="{TemplateBinding Background}"
BorderBrush="Transparent"
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Minute}" />
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
剛剛嘗試過:沒有工作。我在那裏的每個背景聲明上都試過了,沒有任何內容。 :) – 2012-03-12 16:38:03
如果您真的對創建樣式和控件模板感興趣,請查看以下完整示例:http://msdn.microsoft.com/en-us/library/ms752043.aspx我總是避免使用主題提供像Areo和其他5或6,因爲他們不教你任何東西:) – Silvermind 2012-03-12 20:12:27
我遇到了2個問題。首先,OverridesDefaultStyle沒有修復背景懸停問題。其次,關於模糊效果,VS不會讓我在一個樣式設置器中設置一個TargetName。我不知道這是否重要,但這是在自定義控件的generic.xaml文件中。哦,我真的非常感謝幫助。 – 2012-03-13 07:17:46