【发布时间】:2012-03-28 18:21:04
【问题描述】:
我有一个包含大量按钮的应用程序,我想通过悬停/单击效果来制作更精美的按钮。我希望可以为此使用样式模板,这样我就不必为每个按钮编写触发器,但我有点卡在这个阶段。
我想你已经大致了解了我想用这段代码 sn-p 在这里完成什么:
<Button BorderBrush="#00000000" Foreground="#00000000" Height="20" HorizontalContentAlignment="Right" IsEnabled="True" Name="btnMinimizeWindow" Width="21" DockPanel.Dock="Right" Margin="0,0,4,2" BorderThickness="0" Focusable="False" Style="{StaticResource ModernButton}">
<Button.Background>
<ImageBrush ImageSource="/MyApp;component/Images/btnMinimize.png" />
</Button.Background>
<Button.Resources>
<DataTemplate x:Key="Default" >
<Image Source="/MyApp;component/Images/btnMinimize.png" />
</DataTemplate>
<DataTemplate x:Key="Hover">
<Image Source="/MyApp;component/Images/btnMinimizeHover.png" />
</DataTemplate>
<DataTemplate x:Key="Active">
<Image Source="/MyApp;component/Images/btnMinimizeActive.png" />
</DataTemplate>
</Button.Resources>
</Button>
和模板文件:
<Style x:Key="ModernButton" TargetType="{x:Type Button}">
<Setter Property="Padding" Value="1"/>
<Setter Property="Background" Value="Transparent" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Name="border" Background="{TemplateBinding Background}">
<ContentPresenter Name="Content" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
</Trigger>
</Trigger>
<Trigger Property="IsPressed" Value="True">
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我该如何解决这个问题?甚至可以这样做吗?还是我必须用数百万个触发器使我的代码混乱?
【问题讨论】: