【发布时间】:2012-03-12 15:47:27
【问题描述】:
这是对Overriding button background in WPF on Aero 和次要学位Custom Control Styling/Triggers 的跟进。
在尝试保留 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>
【问题讨论】:
标签: wpf templates triggers styles mouseover