先上效果图:
1.这里使用的是ToggleButton,利用其IsChecked属性控制Storyboard,代码如下:
<UserControl.Resources>
<Geometry x:Key="Icon_Left_Desgin">M797.152 172l-303.424 303.424 303.424 303.424q10.848 10.848 10.848 25.728t-10.848 25.728l-94.848 94.848q-10.848 10.848-25.728 10.848t-25.728-10.848l-424-424q-10.848-10.848-10.848-25.728t10.848-25.728l424-424q10.848-10.848 25.728-10.848t25.728 10.848l94.848 94.848q10.848 10.848 10.848 25.728t-10.848 25.728z</Geometry>
<Geometry x:Key="Icon_Right_Desgin">M778.857143 501.142857l-424 424q-10.857143 10.857143-25.714286 10.857143t-25.714286-10.857143l-94.857143-94.857143q-10.857143-10.857143-10.857143-25.714286t10.857143-25.714286l303.428571-303.428571-303.428571-303.428571q-10.857143-10.857143-10.857143-25.714286t10.857143-25.714286l94.857143-94.857143q10.857143-10.857143 25.714286-10.857143t25.714286 10.857143l424 424q10.857143 10.857143 10.857143 25.714286t-10.857143 25.714286z</Geometry>
<Style x:Key="PathToggleButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid>
<Border Name="bg" Background="{TemplateBinding Background}" Opacity="0.25" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}"/>
<Path x:Name="icon" Width="10" Height="10" Data="{StaticResource Icon_Left_Desgin}" Fill="{TemplateBinding Foreground}" SnapsToDevicePixels="True" Stretch="Uniform"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="icon" Property="Data" Value="{StaticResource Icon_Right_Desgin}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Storyboard x:Key="OnChecked">
<DoubleAnimation Storyboard.TargetName="DataBorder" Storyboard.TargetProperty="Width"
Duration="0:0:0.3" To="300"/>
</Storyboard>
<Storyboard x:Key="OnUnchecked">
<DoubleAnimation Storyboard.TargetName="DataBorder" Storyboard.TargetProperty="Width"
Duration="0:0:0.3" To="0"/>
</Storyboard>
</UserControl.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="2">
<Border x:Name="DataBorder" Width="0" Background="Black" Opacity="0.6"/>
<ToggleButton Width="26" Height="60" HorizontalAlignment="Left" Foreground="White" Style="{StaticResource PathToggleButtonStyle}" Cursor="Hand">
<ToggleButton.Triggers>
<EventTrigger RoutedEvent="ToggleButton.Checked">
<BeginStoryboard Storyboard="{StaticResource OnChecked}"/>
</EventTrigger>
<EventTrigger RoutedEvent="ToggleButton.Unchecked">
<BeginStoryboard Storyboard="{StaticResource OnUnchecked}"/>
</EventTrigger>
</ToggleButton.Triggers>
</ToggleButton>
</Grid>
</Grid>