这是对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