我为按钮的MouseEnter效果编写了一个简单的代码。还有两个我想要相同效果的其他按钮。不用再次编写相同的代码,我该如何重用它们?
<Button Content="Common Factor" FontSize="32" Foreground="White"
Background="#FF3399FF" Width="250" Height="60" Margin="20" >
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Width" To="300"/>
<DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Height" To="80"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
您可以将样式存储在任何资源字典对象中,例如App.xaml中的MergedDictionary
或Window.Resources
:
<Window.Resources>
<Style TargetType="Button" x:Key="myStyle">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Width" To="300"/>
<DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Height" To="80"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
并通过创建StaticResource
类型的对象来重用它:
<Button Style="{StaticResource myStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Style="{StaticResource myStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Style="{StaticResource myStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
[回答您的问题
您可以像这样在Style
中声明ResourceDictionary
:
<Window.Resources>
<Style TargetType="Button" x:Key="MyButtonStyle">
<Style.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Width" To="300"/>
<DoubleAnimation Duration="0:0:0.500" Storyboard.TargetProperty="Height" To="80"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
通过给它一个密钥(在这里为"MyButtonStyle"
),您可以使用StaticResource
标记从其他地方引用它:
<Button Style="{StaticResource MyButtonStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Style="{StaticResource MyButtonStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
<Button Style="{StaticResource MyButtonStyle}" Content="Common Factor" FontSize="32" Foreground="White" Background="#FF3399FF" Width="250" Height="60" Margin="20"/>
要进一步使用样式
注意,如果您没有通过删除Style
标记为x:Key="MyButtonStyle"
指定显键,则Style
将自动应用于所有Controls
,而无需设置显式的Style
属性。例如,如下定义的Style
:
<Window.Resources>
<Style TargetType="Button">
<Style.Setters>
<Setter Property="Background" Value="Red"/>
</Style.Setters>
</Style>
</Window.Resources>
将自动应用于[c0]中没有epxlicit Buttons
属性的所有Window
。