Silverlight 2自定义触发按钮控制器模板
<!-- ToggleButton Control Template -->
<ControlTemplate TargetType="ToggleButton">
<Grid x:Name="RootElement">
<Grid.Resources>
<!-- Visual constants used by the template -->
<Color x:Key="BaseColor">#FF003255</Color>
<Color x:Key="LinearBevelLightStartColor">#FCFFFFFF
</Color> <Color x:Key="LinearBevelLightEndColor">#F4FFFFFF</Color>
<Color x:Key="LinearBevelDarkStartColor">#E0FFFFFF</Color>
<Color x:Key="LinearBevelDarkEndColor">#B2FFFFFF</Color>
<Color x:Key="MouseOverLinearBevelDarkEndColor">
#7FFFFFFF</Color>
<Color x:Key="HoverLinearBevelLightStartColor">
#FCFFFFFF</Color>
<Color x:Key
="HoverLinearBevelLightEndColor">
#EAFFFFFF</Color>
<Color x:Key="HoverLinearBevelDarkStartColor">#D8FFFFFF</Color>
<Color x:Key="HoverLinearBevelDarkEndColor">#4CFFFFFF</Color>
<Color x:Key="CheckedLinearBevelLightStartColor">#FCFFFFFF</Color>
<Color x:Key="CheckedLinearBevelLightEndColor">#EAFFFFFF</Color>
<Color x:Key="CheckedLinearBevelDarkStartColor">#D8FFFFFF</Color>
<Color x:Key="CheckedLinearBevelDarkEndColor">#4CFFFFFF</Color>
<Color x:Key="CurvedBevelFillStartColor">#B3FFFFFF</Color>
<Color x:Key="CurvedBevelFillEndColor">#3CFFFFFF</Color>
<Color x:Key="HoverPressedCurvedBevelFillStartColor">#6FFFFFFF</Color>
<Color x:Key="HoverPressedCurvedBevelFillEndColor">#39FFFFFF</Color>
<Color x:Key="ArrowColor">#FF000000</Color>
<Color x:Key="ArrowActiveColor">#FF00B300</Color>
<Color x:Key="ArrowHoverColor">#FFFF0000</Color>
<SolidColorBrush x:Key="BorderBrush" Color="#FF000000" />
<SolidColorBrush x:Key="AccentBrush" Color="#FFFFFFFF" />
<SolidColorBrush x:Key="DisabledBrush" Color="#A5FFFFFF" />
<LinearGradientBrush x:Key="FocusedStrokeBrush"
StartPoint="0.5,0"Endpoint="0.5,1">
<GradientStop Color="#B2FFFFFF" Offset="0" />
<GradientStop Color="#51FFFFFF" Offset="1" />
<GradientStop Color="#66FFFFFF" Offset="0.325" />
<GradientStop Color="#1EFFFFFF" Offset="0.325" />
</LinearGradientBrush>
</Grid.Resources>
<!-- Visual states of the togglebutton template -->
<vsm:VisualStateManager.VisualStateGroups>
<vsm:VisualStateGroup x:Name="CheckedMouseStates">
<vsm:VisualState x:Name="MouseLeave">
<Storyboard>
<ColorAnimation Duration="0:0:0.1" Storyboard.TargetName="ArrowBrush"
Storyboard.TargetProperty="Color" To="{StaticResource
ArrowColor}" />
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="MouseEnter">
<Storyboard>
<ColorAnimation Duration="0:0:0.1"
Storyboard.TargetName="ArrowBrush"
Storyboard.TargetProperty="Color" To="{StaticResource
ArrowHoverColor}" />
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<vsm:VisualStateGroup x:Name="CommonStates">
<vsm:VisualStateGroup.Transitions>
<vsm:VisualTransition To="MouseOver" Duration="0:0:0.2" />
<vsm:VisualTransition To="Pressed" Duration="0:0:0.1" />
</vsm:VisualStateGroup.Transitions>
<vsm:VisualState x:Name="Normal" />
<vsm:VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimation Storyboard.TargetName="LinearBevelDarkEnd"
Storyboard.TargetProperty="Color" To="{StaticResource
MouseOverLinearBevelDarkEndColor}"
Duration="0" />
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Pressed">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="LinearBevelLightEnd"
Storyboard.TargetProperty="Offset" To=".2" Duration="0" />
<ColorAnimation Storyboard.TargetName="LinearBevelLightStart"
Storyboard.TargetProperty="Color" To="{
StaticResource HoverLinearBevelLightEndColor}"
Duration="0" /><ColorAnimation Storyboard.TargetName="LinearBevelLightEnd"
Storyboard.TargetProperty="Color" To="{
StaticResource
HoverLinearBevelLightEndColor}"
Duration="0" />
<ColorAnimation Storyboard.TargetName="LinearBevelDarkStart"
Storyboard.TargetProperty="Color" To="{
StaticResource HoverLinearBevelDarkStartColor}"Duration="0" />
<ColorAnimation Storyboard.TargetName="LinearBevelDarkEnd"
Storyboard.TargetProperty="Color"
To="{
StaticResource HoverLinearBevelDarkEndColor}" Duration="0" />
<DoubleAnimation Storyboard.TargetName="DownStroke"
Storyboard.TargetProperty="Opacity" To="1" Duration="0" />
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Disabled">
<Storyboard>
<Storyboard.TargetName="DisabledVisual"
Storyboard.TargetProperty="Opacity"
To="1" Duration="0" />
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<vsm:VisualStateGroup x:Name="CheckStates">
<vsm:VisualStateGroup.Transitions>
<vsm:VisualTransition Duration="0:0:0.1" />
</vsm:VisualStateGroup.Transitions>
<vsm:VisualState x:Name="Checked">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="DownStroke"
Storyboard.TargetProperty="Opacity" To="1" Duration="0" />
<DoubleAnimation Storyboard.TargetName="FocusVisualElement"
Storyboard.TargetProperty="Opacity" To="0" Duration="0" />
<ColorAnimation Storyboard.TargetName="ArrowBrush"
Storyboard.TargetProperty="Color" To="{
StaticResource ArrowActiveColor}" Duration="0"/>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Unchecked">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="LinearBevelLightEnd"
Storyboard.TargetProperty ="Offset" To="0.35" Duration="0" />
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Indeterminate">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="LinearBevelLightEnd"
Storyboard.TargetProperty ="Offset" To="0.2"
Duration="0" />
<DoubleAnimation Storyboard.TargetName
="IndeterminateNormal" Storyboard.TargetProperty="Opacity" To="1" Duration="0" />
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
<vsm:VisualStateGroup x:Name="FocusStates">
<vsm:VisualState x:Name="Focused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName
="FocusVisualElement"
Storyboard.TargetProperty="Visibility"Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
<vsm:VisualState x:Name="Unfocused">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName
="FocusVisualElement"
Storyboard.TargetProperty="Visibility"Duration="0">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value><Visibility>Collapsed</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</vsm:VisualState>
</vsm:VisualStateGroup>
</vsm:VisualStateManager.VisualStateGroups>
<Rectangle RadiusX="1"
RadiusY="1" Margin="1,2,1.5,2" StrokeThickness="1">
<Rectangle.Fill>
<LinearGradientBrush StartPoint="0.7,0" Endpoint="0.7,1">
<GradientStop x:Name="LinearBevelLightStart" Color="{
StaticResource LinearBevelLightStartColor}" Offset="0" />
<GradientStop x:Name="LinearBevelLightEnd" Color="{
StaticResource LinearBevelLightEndColor}" Offset="0.35" />
<GradientStop x:Name="LinearBevelDarkStart" Color="{
StaticResource LinearBevelDarkStartColor}" Offset="0.35" />
<GradientStop x:Name="LinearBevelDarkEnd"
Color="{
StaticResource LinearBevelDarkEndColor}" Offset="1" />
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Grid x:Name="CurvedBevelScale" Margin="2">
<Grid.RowDefinitions>
<RowDefinition Height="7*" />
<RowDefinition Height="3*" />
</Grid.RowDefinitions>
<Path x:Name="CurvedBevel" Stretch="Fill" Margin="1.5,1,1.5,2"
Data="F1 M0,0.02 L0,0.15
C0.15,0.22 0.3,0.25 0.5,0.25 0.7,0.25 0.85,
0.22 1,0.15 L1,0.02 1,0 0.02,0 0,0.02 z">
<Path.Fill>
<LinearGradientBrush StartPoint="0.5,0" Endpoint="0.5,1">
<GradientStop x:Name="CurvedBevelFillStart" Color="{
StaticResource CurvedBevelFillStartColor}" Offset="0" />
<GradientStop x:Name="CurvedBevelFillEnd" Color="{
StaticResource CurvedBevelFillEndColor}" Offset="1" />
</LinearGradientBrush>
</Path.Fill>
</Path>
</Grid>
<Grid x:Name
="FocusVisualElement" Visibility="Collapsed">
</Grid>
<Grid x:Name="CheckedNormal" Opacity="0">
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2.5,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2.25,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,1.75,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="1" Margin="1" />
<Rectangle RadiusX="1"
RadiusY="1" StrokeThickness="1" Margin="1" >
<Rectangle.Stroke>
<LinearGradientBrush Endpoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#A5FFFFFF" Offset="0" />
<GradientStop Color="#FFFFFFFF" Offset="1" />
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle>
</Grid>
<Grid x:Name="CheckedPressed" Opacity="0">
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2.5,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2.25,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,1.75,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="1" Margin="1" />
<Rectangle RadiusX="1"
RadiusY="1" StrokeThickness="1" Margin="1">
<Rectangle.Stroke>
<LinearGradientBrush Endpoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#A5FFFFFF" Offset="0" />
<GradientStop Color="#FFFFFFFF" Offset="1" />
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle>
</Grid>
<Grid x:Name="IndeterminateNormal" Opacity="0">
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2.5,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2.25,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,1.75,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="1" Margin="1" />
<Rectangle RadiusX="1"
RadiusY="1" StrokeThickness="1" Margin="1">
<Rectangle.Stroke>
<LinearGradientBrush Endpoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#A5FFFFFF" Offset="0" />
<GradientStop Color="#FFFFFFFF" Offset="1" />
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle>
</Grid>
<Grid x:Name="IndeterminatePressed" Opacity="0">
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1" StrokeThickness="1" Opacity="0.05" Margin="1.5,2.5,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="0.05" Margin="1.5,2.25,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="0.05" Margin="1.5,2,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="0.05" Margin="1.5,1.75,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="1"Margin="1" />
<Rectangle RadiusX="1"
RadiusY="1"StrokeThickness="1"Margin="1">
<Rectangle.Stroke>
<LinearGradientBrush Endpoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#A5FFFFFF" Offset="0" />
<GradientStop Color="#FFFFFFFF" Offset="1" />
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle>
</Grid>
<Grid x:Name="DownStroke" Opacity="0">
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="0.05" Margin="1.5,2.5,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="0.05" Margin="1.5,2.25,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="0.05" Margin="1.5,2,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="0.05" Margin="1.5,1.75,1.5,1.5" />
<Rectangle Stroke="{TemplateBinding Background}" RadiusX="1"
RadiusY="1"StrokeThickness="1"Opacity="1" Margin="1" />
<Rectangle RadiusX="1"
RadiusY="1" StrokeThickness="1" Margin="1">
<Rectangle.Stroke>
<LinearGradientBrush Endpoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#A5FFFFFF" Offset="0" />
<GradientStop Color="#FFFFFFFF" Offset="1" />
</LinearGradientBrush>
</Rectangle.Stroke>
</Rectangle>
</Grid>
<!-- ToggleButton content -->
<Grid>
<Path Margin="0,0,0,0" HorizontalAlignment="Center"
VerticalAlignment="Center" Data="M 0,0 L 3.5,4 L 7,0 Z">
<Path.Fill>
<SolidColorBrush x:Name="ArrowBrush" Color="{
StaticResource ArrowColor}"/>
</Path.Fill>
</Path>
</Grid>
</Grid>
</ControlTemplate>
|
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。