您现在的位置: 主页 > 嵌入式相关 > [最多推荐]WPF仿网易云音乐系列(一、左侧菜单栏:Expander+Radi
本文所属标签:
为本文创立个标签吧:

[最多推荐]WPF仿网易云音乐系列(一、左侧菜单栏:Expander+Radi

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-07-04 

1.简介

上一篇咱们说到,网易云音乐的左侧菜单栏可以通过Expander+RadioButton来实现,具体如何实现,咱们下面开始干;

首先来一张网易云音乐PC版原图(个人觉得PC版比UWP版左侧菜单好看点):

然后当然是再上以下咱们做出的效果图了:

还原度百分之百有没有。。。

2.上硬菜

首先是无边框窗口方案,这里使用的是DMSkin for WPF,Github地址:https://github.com/944095635/DMSkin-for-WPF

Expander

 1 <ControlTemplate x:Key="ExpanderToggleButton" TargetType="ToggleButton"> 2         <Border Name="Border"  CornerRadius="2,0,0,0" Background="Transparent" BorderThickness="0,0,1,0"> 3             <Image Name="image" Source="/CloudMusic;component/Images/tabitems/down_normal.png" /> 4         Border> 5         <ControlTemplate.Triggers> 6             <Trigger Property="IsChecked" Value="true"> 7                 <Setter TargetName="image" Property="Source" Value="/CloudMusic;component/Images/tabitems/up_normal.png" /> 8             Trigger> 9             <Trigger Property="IsChecked" Value="false">10                 <Setter TargetName="image" Property="Source" Value="/CloudMusic;component/Images/tabitems/down_normal.png" />11             Trigger>12             <MultiTrigger>13                 <MultiTrigger.Conditions>14                     <Condition Property="IsChecked" Value="true" />15                     <Condition Property="IsMouseOver" Value="true" />16                 MultiTrigger.Conditions>17                 <Setter TargetName="image" Property="Source" Value="/CloudMusic;component/Images/tabitems/up_hover.png" />18             MultiTrigger>19             <MultiTrigger>20                 <MultiTrigger.Conditions>21                     <Condition Property="IsChecked" Value="false" />22                     <Condition Property="IsMouseOver" Value="true" />23                 MultiTrigger.Conditions>24                 <Setter TargetName="image" Property="Source" Value="/CloudMusic;component/Images/tabitems/down_hover.png" />25             MultiTrigger>26         ControlTemplate.Triggers>27     ControlTemplate>28     <Style TargetType="Expander">29         <Setter Property="Template">30             <Setter.Value>31                 <ControlTemplate TargetType="Expander">32                     <Grid>33                         <Grid.RowDefinitions>34                             <RowDefinition Height="auto" />35                             <RowDefinition Name="ContentRow" Height="0" />36                         Grid.RowDefinitions>37                         <Border Name="Border" Grid.Row="0" BorderThickness="1" CornerRadius="2,2,0,0">38                             <Grid Width="140" HorizontalAlignment="Left">39                                 <Grid.ColumnDefinitions>40                                     <ColumnDefinition Width="*" />41                                     <ColumnDefinition Width="20" />42                                 Grid.ColumnDefinitions>43                                 <ToggleButton  IsChecked="{Binding Path=IsExpanded,Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}"44                                             OverridesDefaultStyle="True" Template="{StaticResource ExpanderToggleButton}" Grid.Column="1" >45 46                                 ToggleButton>47                                 <ContentPresenter Grid.Column="0" Margin="4" ContentSource="Header" RecognizesAccessKey="True" />48                             Grid>49                         Border>50                         <Border Name="Content" Grid.Row="1" CornerRadius="0,0,2,2">51                             <ContentPresenter  />52                         Border>53 54                     Grid>55                     <ControlTemplate.Triggers>56                         <Trigger Property="IsExpanded" Value="True">57                             <Setter TargetName="ContentRow" Property="Height" Value="{Binding ElementName=Content,Path=DesiredHeight}" />58                         Trigger>59                     ControlTemplate.Triggers>60                 ControlTemplate>61             Setter.Value>62         Setter>63     Style>
View Code

RadioButton

 1 <Style x:Key="McRadioButton" TargetType="RadioButton" > 2         <Setter Property="FontSize" Value="12">Setter> 3         <Setter Property="Height" Value="25">Setter> 4         <Setter Property="Foreground" Value="#444">Setter> 5         <Setter Property="Template" > 6             <Setter.Value> 7                 <ControlTemplate  TargetType="{x:Type RadioButton}"> 8                     <Grid x:Name="back" Background="Transparent" > 9                         <Grid.ColumnDefinitions>10                             <ColumnDefinition Width="3">ColumnDefinition>11                             <ColumnDefinition Width="auto">ColumnDefinition>12                             <ColumnDefinition Width="5">ColumnDefinition>13                             <ColumnDefinition Width="*">ColumnDefinition>14                             <ColumnDefinition Width="10">ColumnDefinition>15                         Grid.ColumnDefinitions>16                         <Border  x:Name="x1" Width="3" Background="{StaticResource MainColor}" Visibility="Collapsed" Grid.Column="0">17                         Border>18                         <Border Grid.Column="1" Visibility="{Binding IsPlayVisibility}" Margin="10,0,10,0">19                             <TextBlock HorizontalAlignment="Left"20                             FontSize="14" FontFamily="/CloudMusic;component/Resources/#SF2015"     21                             Text="{TemplateBinding Tag}" Foreground="{DynamicResource DMMainColor}"22                             VerticalAlignment="Center" >TextBlock>23                         Border>24                         <Border Grid.Column="3"  x:Name="x">25                             <TextBlock x:Name="Content" Text="{TemplateBinding Content}" 26                             HorizontalAlignment="Left" VerticalAlignment="Center" >TextBlock>27                         Border>28                     Grid>29                     <ControlTemplate.Triggers>30                         <Trigger Property="IsMouseOver" Value="true" >31                             <Setter Property="Background" TargetName="back" Value="#FFF5F5F7">Setter>32                         Trigger>33                         <Trigger Property="IsChecked" Value="true">34                             <Setter Property="Visibility" TargetName="x1" Value="Visible">Setter>35                             <Setter Property="BorderThickness" TargetName="x1" Value="0">Setter>36                             <Setter Property="Foreground" TargetName="Content" Value="#FF333333">Setter>37                             <Setter Property="Background" TargetName="back" Value="#FFE3E3E5">Setter>38                         Trigger>39                     ControlTemplate.Triggers>40                 ControlTemplate>41             Setter.Value>42         Setter>43     Style>
View Code

以上就是Expander+RadioButton的核心代码了;其中用到的图标可以到阿里的iconfont去找;

另外,Expander旁边的小箭头,网易云是没有的,这里我个人觉得加上要好一些,这个可以看个人需求删除或者保留



              查看评论 回复



嵌入式交流网主页 > 嵌入式相关 > [最多推荐]WPF仿网易云音乐系列(一、左侧菜单栏:Expander+Radi
 网易 个人 咱们

"[最多推荐]WPF仿网易云音乐系列(一、左侧菜单栏:Expander+Radi"的相关文章

网站地图

围观()