首页 > 编程 > C# > 正文

WPF实现类似360安全卫士界面的程序源码分享

2019-10-29 21:37:47
字体:
来源:转载
供稿:网友

最近在网上看到了新版的360安全卫士,感觉界面还不错,于是用WPF制作了一个,时间有限,一些具体的控件没有制作,用图片代替了。感兴趣的朋友一起跟着小编学习WPF实现类似360安全卫士界面的程序源码分享

下面通过图文并茂的方式给大家介绍WPF实现类似360安全卫士界面的程序源码分享,点击此处下载源码哦。

以前学习Windows Form编程的时候,总感觉自己做的界面很丑,看到360安全卫士、迅雷等软件的UI设计都非常美观,心里总是憧憬着要是自己能实现这样的UI效果该多好!!!另一个困扰我的问题是,这个UI皮肤是如何用技术实现的呢?!虽然好多年过去了,但心里的憧憬和疑惑一直没有消失,而且越来越强烈。在日常的工作和学习中,自己在网上也经常留意类似的技术或者文章。最近在学习WPF的过程中,看到网上也有仿360和仿迅雷UI设计的资源,通过对资源的学习和自己的动手实践,终于实现了下面的仿360安全卫士界面:

WPF实现类似360安全卫士界面的程序源码分享

由于项目文件比较多,这里罗列出核心的过程和代码:

1、VS解决方案结构:

WpfPageTransitions是一个WPF类库,实现UI页面切换动画效果,支持多种动画,可以通过TransitionType属性进行设置,其原理是定义了多个切换动画类型的Storyboard,程序根据配置的TransitionType去执行匹配的Storyboard动画(分出入动画,xxxxxxIn和xxxxxxOut)。360UI是一个WPF 桌面应用程序,styles文件夹下存放了定义的按钮样式、菜单项样式、页签样式等样式和需要的所有UI切图资源。pages文件夹下存放切换的详细子页面。

WPF实现类似360安全卫士界面的程序源码分享

(备注:图片资源和部分文件来自互联网,特别感谢KXFang360项目提供的360整套配图和布局文件)

2、页面切换控件核心代码:

 

 
  1. <UserControl x:Class="WpfPageTransitions.PageTransition" 
  2. xmlns="http://schemas.microsoft.com/winfx//xaml/presentation" 
  3. xmlns:x="http://schemas.microsoft.com/winfx//xaml" 
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/" 
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/" 
  6. xmlns:local="clr-namespace:WpfPageTransitions" 
  7. mc:Ignorable="d" 
  8. d:DesignHeight="" d:DesignWidth=""
  9. <UserControl.Resources> 
  10. <Style TargetType="{x:Type ContentPresenter}"
  11. <Setter Property="LayoutTransform"
  12. <Setter.Value> 
  13. <ScaleTransform /> 
  14. </Setter.Value> 
  15. </Setter> 
  16. </Style> 
  17. <local:CenterConverter x:Key="centerConverter"/> 
  18. <!-- Slide and Fade --> 
  19. <Storyboard x:Key="SlideAndFadeIn" > 
  20. <ThicknessAnimation Duration="::." Storyboard.TargetProperty="Margin" From=",,-," To="" DecelerationRatio="." /> 
  21. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" From="" To="" /> 
  22. </Storyboard> 
  23. <Storyboard x:Key="SlideAndFadeOut"
  24. <ThicknessAnimation Duration="::." Storyboard.TargetProperty="Margin" To="-,,," AccelerationRatio="."/> 
  25. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" To="" /> 
  26. </Storyboard> 
  27. <!-- Fade --> 
  28. <Storyboard x:Key="FadeIn" > 
  29. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" From="" To="" /> 
  30. </Storyboard> 
  31. <Storyboard x:Key="FadeOut"
  32. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" To="" /> 
  33. </Storyboard> 
  34. <!-- Slide --> 
  35. <Storyboard x:Key="SlideIn" > 
  36. <ThicknessAnimation Duration="::." Storyboard.TargetProperty="Margin" From=",,-," To="" DecelerationRatio="." /> 
  37. </Storyboard> 
  38. <Storyboard x:Key="SlideOut"
  39. <ThicknessAnimation Duration="::." Storyboard.TargetProperty="Margin" To="-,,," AccelerationRatio="."/> 
  40. </Storyboard> 
  41. <!-- Grow --> 
  42. <Storyboard x:Key="GrowIn" > 
  43. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleX)" From="" To="" Duration="::." DecelerationRatio="." /> 
  44. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleY)" From="" To="" Duration="::." DecelerationRatio="." /> 
  45. </Storyboard> 
  46. <Storyboard x:Key="GrowOut"
  47. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleX)" To="" Duration="::." AccelerationRatio="." /> 
  48. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleY)" To="" Duration="::." AccelerationRatio="." /> 
  49. </Storyboard> 
  50. <!-- Grow and Fade --> 
  51. <Storyboard x:Key="GrowAndFadeIn" > 
  52. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleX)" From="" To="" Duration="::." DecelerationRatio="." /> 
  53. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleY)" From="" To="" Duration="::." DecelerationRatio="." /> 
  54. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" From="" To="" /> 
  55. </Storyboard> 
  56. <Storyboard x:Key="GrowAndFadeOut"
  57. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleX)" To="" Duration="::." AccelerationRatio="." /> 
  58. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleY)" To="" Duration="::." AccelerationRatio="." /> 
  59. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" To="" /> 
  60. </Storyboard> 
  61. <!-- Flip --> 
  62. <Storyboard x:Key="FlipIn" > 
  63. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(SkewTransform.AngleX)" From="-" To="" Duration="::." DecelerationRatio="." /> 
  64. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(SkewTransform.AngleY)" From="-" To="" Duration="::." DecelerationRatio="." /> 
  65. </Storyboard> 
  66. <Storyboard x:Key="FlipOut"
  67. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(SkewTransform.AngleX)" To="" Duration="::." AccelerationRatio="." /> 
  68. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(SkewTransform.AngleY)" To="" Duration="::." AccelerationRatio="." /> 
  69. </Storyboard> 
  70. <!-- Flip and Fade --> 
  71. <Storyboard x:Key="FlipAndFadeIn" > 
  72. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(SkewTransform.AngleX)" From="-" To="" Duration="::." DecelerationRatio="." /> 
  73. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(SkewTransform.AngleY)" From="-" To="" Duration="::." DecelerationRatio="." /> 
  74. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" From="" To="" /> 
  75. </Storyboard> 
  76. <Storyboard x:Key="FlipAndFadeOut"
  77. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(SkewTransform.AngleX)" To="" Duration="::." AccelerationRatio="." /> 
  78. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(SkewTransform.AngleY)" To="" Duration="::." AccelerationRatio="." /> 
  79. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" To="" /> 
  80. </Storyboard> 
  81. <!-- Spin --> 
  82. <Storyboard x:Key="SpinIn" > 
  83. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(RotateTransform.Angle)" From="-" To="" Duration="::." DecelerationRatio="." /> 
  84. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleX)" From="" To="" Duration="::." DecelerationRatio="." /> 
  85. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleY)" From="" To="" Duration="::." DecelerationRatio="." />  
  86. </Storyboard> 
  87. <Storyboard x:Key="SpinOut"
  88. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(RotateTransform.Angle)" To="" Duration="::." AccelerationRatio="." /> 
  89. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleX)" To="" Duration="::." AccelerationRatio="." /> 
  90. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleY)" To="" Duration="::." AccelerationRatio="." /> 
  91. </Storyboard> 
  92. <!-- Spin and Fade --> 
  93. <Storyboard x:Key="SpinAndFadeIn" > 
  94. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(RotateTransform.Angle)" From="-" To="" Duration="::." DecelerationRatio="." /> 
  95. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleX)" From="" To="" Duration="::." DecelerationRatio="." /> 
  96. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleY)" From="" To="" Duration="::." DecelerationRatio="." /> 
  97. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" From="" To="" /> 
  98. </Storyboard> 
  99. <Storyboard x:Key="SpinAndFadeOut"
  100. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(RotateTransform.Angle)" To="" Duration="::." AccelerationRatio="." /> 
  101. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleX)" To="" Duration="::." AccelerationRatio="." /> 
  102. <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(TransformGroup.Children)[].(ScaleTransform.ScaleY)" To="" Duration="::." AccelerationRatio="." /> 
  103. <DoubleAnimation Duration="::." Storyboard.TargetProperty="Opacity" To="" /> 
  104. </Storyboard> 
  105. </UserControl.Resources> 
  106. <Grid Name="page"
  107. <ContentControl Name="contentPresenter" > 
  108. <ContentControl.RenderTransform> 
  109. <TransformGroup> 
  110. <ScaleTransform ScaleX="" ScaleY="" 
  111. CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
  112. CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" /> 
  113. <SkewTransform AngleX="" AngleY="" 
  114. CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
  115. CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" /> 
  116. <RotateTransform Angle="" 
  117. CenterX="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualWidth, Converter={StaticResource centerConverter}}" 
  118. CenterY="{Binding RelativeSource={RelativeSource AncestorType=Grid, Mode=FindAncestor}, Path=ActualHeight, Converter={StaticResource centerConverter}}" /> 
  119. <TranslateTransform X="" Y="" /> 
  120. </TransformGroup> 
  121. </ContentControl.RenderTransform> 
  122. </ContentControl> 
  123. </Grid> 
  124. </UserControl> 
  125.  
  126. using System; 
  127. using System.Collections.Generic; 
  128. using System.Linq; 
  129. using System.Text; 
  130. using System.Windows; 
  131. using System.Windows.Controls; 
  132. using System.Windows.Data; 
  133. using System.Windows.Documents; 
  134. using System.Windows.Input; 
  135. using System.Windows.Media; 
  136. using System.Windows.Media.Imaging; 
  137. using System.Windows.Navigation; 
  138. using System.Windows.Shapes; 
  139. using System.Threading.Tasks; 
  140. using System.Windows.Media.Animation; 
  141. namespace WpfPageTransitions 
  142. public partial class PageTransition : UserControl 
  143. Stack<UserControl> pages = new Stack<UserControl>(); 
  144. public UserControl CurrentPage { get; set; } 
  145. public static readonly DependencyProperty TransitionTypeProperty = DependencyProperty.Register("TransitionType"
  146. typeof(PageTransitionType), 
  147. typeof(PageTransition), new PropertyMetadata(PageTransitionType.SlideAndFade)); 
  148. public PageTransitionType TransitionType 
  149. get 
  150. return (PageTransitionType)GetValue(TransitionTypeProperty); 
  151. set 
  152. SetValue(TransitionTypeProperty, value); 
  153. public PageTransition() 
  154. InitializeComponent(); 
  155. }  
  156. public void ShowPage(UserControl newPage) 
  157. {  
  158. pages.Push(newPage); 
  159. Task.Factory.StartNew(() => ShowNewPage()); 
  160. void ShowNewPage() 
  161. Dispatcher.Invoke((Action)delegate 
  162. if (contentPresenter.Content != null
  163. UserControl oldPage = contentPresenter.Content as UserControl; 
  164. if (oldPage != null
  165. oldPage.Loaded -= newPage_Loaded; 
  166. UnloadPage(oldPage); 
  167. else 
  168. ShowNextPage(); 
  169. }); 
  170. void ShowNextPage() 
  171. UserControl newPage = pages.Pop(); 
  172. newPage.Loaded += newPage_Loaded; 
  173. contentPresenter.Content = newPage; 
  174. void UnloadPage(UserControl page) 
  175. Storyboard hidePage = (Resources[string.Format("{}Out", TransitionType.ToString())] as Storyboard).Clone(); 
  176. hidePage.Completed += hidePage_Completed; 
  177. hidePage.Begin(contentPresenter); 
  178. void newPage_Loaded(object sender, RoutedEventArgs e) 
  179. Storyboard showNewPage = Resources[string.Format("{}In", TransitionType.ToString())] as Storyboard; 
  180. showNewPage.Begin(contentPresenter); 
  181. CurrentPage = sender as UserControl; 
  182. }  
  183. void hidePage_Completed(object sender, EventArgs e) 
  184. contentPresenter.Content = null
  185. ShowNextPage(); 
  186. }  

3、Like360Main核心代码为:

其中AllowsTransparency="True" WindowStyle="None" Background="{x:Null}"的目的是让WPF窗体隐藏默认的边框,这样可以允许用背景图片填充WPF定义窗体外观。在这区间可以自定义关闭、最小化和最大化按钮等。

MouseLeftButtonDown="Window_MouseLeftButtonDown" 目的是为了支持窗体拖动。FontFamily="SimSun" TextOptions.TextFormattingMode="Display"的目的是为了解决WPF中文字体显示模糊的问题。

 

 
  1. <Window x:Class="_UI.LikeMain" 
  2. xmlns="http://schemas.microsoft.com/winfx//xaml/presentation" 
  3. xmlns:x="http://schemas.microsoft.com/winfx//xaml" 
  4. Title="LikeMain" Height="" Width="" 
  5. FontFamily="SimSun" 
  6. AllowsTransparency="True" WindowStyle="None" 
  7. xmlns:pageTransitions="clr-namespace:WpfPageTransitions;assembly=WpfPageTransitions" 
  8. Background="{x:Null}" MouseLeftButtonDown="Window_MouseLeftButtonDown" TextOptions.TextFormattingMode="Display" > 
  9. <Window.Resources> 
  10. <LinearGradientBrush x:Key="MyBrush" EndPoint=".," StartPoint=".,"
  11. <GradientStop Color="#CFFFFFFF"/> 
  12. <GradientStop Color="#FFEBDD" Offset=""/> 
  13. </LinearGradientBrush> 
  14. </Window.Resources> 
  15. <Border BorderBrush="Black" BorderThickness="" CornerRadius="" Margin=""
  16. <Border.Effect> 
  17. <DropShadowEffect ShadowDepth="" Opacity="."/> 
  18. </Border.Effect> 
  19. <Border.Background> 
  20. <ImageBrush ImageSource="styles/skin/frame.jpg"/> 
  21. </Border.Background> 
  22. <Grid> 
  23. <Grid.RowDefinitions> 
  24. <RowDefinition Height="."/> 
  25. <RowDefinition Height="."/> 
  26. <RowDefinition/> 
  27. <RowDefinition Height="."/> 
  28. </Grid.RowDefinitions> 
  29. <!--上标题栏--> 
  30. <Label Content="安全卫士界面" HorizontalAlignment="Left" Width="." Foreground="#AEFF" FontWeight="Bold" TextOptions.TextFormattingMode="Display"/> 
  31. <Rectangle Margin="" Stroke="Black" HorizontalAlignment="Right" Width="." Grid.Row="" StrokeThickness=""
  32. <Rectangle.Fill> 
  33. <ImageBrush ImageSource="styles/skin/logo.png" Stretch="Uniform"/> 
  34. </Rectangle.Fill> 
  35. </Rectangle> 
  36. <Button Content="x" HorizontalAlignment="Right" Margin=",,.," Style="{DynamicResource SysButtonStyle}" Width="." Name="closeButton" Click="closeButton_Click" /> 
  37. <Button Content="max" HorizontalAlignment="Right" Margin=",,.," Style="{DynamicResource MaxButtonStyle}" Width="." Name="maxButton" Click="maxButton_Click"
  38. <Button.Background> 
  39. <ImageBrush ImageSource="styles/skin/Button/MAX.png" Stretch="Uniform"/> 
  40. </Button.Background> 
  41. </Button> 
  42. <Button Content="mni" HorizontalAlignment="Right" Margin=",,.," Style="{DynamicResource MaxButtonStyle}" Width="." Name="mniButton" Click="mniButton_Click"
  43. <Button.Background> 
  44. <ImageBrush ImageSource="styles/skin/Button/MNI.png" Stretch="Uniform"/> 
  45. </Button.Background> 
  46. </Button> 
  47. <Button x:Name="menuButton" HorizontalAlignment="Right" Margin=",,.," Style="{DynamicResource MButtonStyle}" Width="." Click="menuButton_Click"
  48. <Button.Background> 
  49. <ImageBrush ImageSource="styles/skin/Button/M.png" Stretch="Uniform"/> 
  50. </Button.Background> 
  51. </Button> 
  52. <Popup x:Name="Menu" AllowsTransparency="True" Margin=",-,," PlacementTarget="{Binding ElementName=menuButton}" StaysOpen="False" PopupAnimation="Scroll"
  53. <Grid Height="." Width="" Margin="" HorizontalAlignment="Left"
  54. <Border BorderThickness="" CornerRadius="" Background="#FFEFEFEF" Margin=""
  55. <Border.Effect> 
  56. <DropShadowEffect ShadowDepth="" Opacity="."/> 
  57. </Border.Effect> 
  58. <StackPanel Margin=","
  59. <MenuItem Header="设 置" Style="{DynamicResource MenuItemStyle}"/> 
  60. <MenuItem Header="更 新"/> 
  61. <MenuItem Header="关 于"/> 
  62. <MenuItem Header="退 出"/> 
  63. </StackPanel> 
  64. </Border> 
  65. </Grid> 
  66. </Popup> 
  67. <Rectangle Stroke="Black" StrokeThickness="" Width="" Margin=",,.,." HorizontalAlignment="Right" Height=""
  68. <Rectangle.Fill> 
  69. <LinearGradientBrush EndPoint=".," StartPoint=".,"
  70. <GradientStop Color="#"/> 
  71. <GradientStop Offset="" Color="#ADDD"/> 
  72. </LinearGradientBrush> 
  73. </Rectangle.Fill> 
  74. </Rectangle> 
  75. <Rectangle Stroke="Black" StrokeThickness="" Width="" Margin=",,.,." HorizontalAlignment="Right" Height=""
  76. <Rectangle.Fill> 
  77. <LinearGradientBrush EndPoint=".," StartPoint=".,"
  78. <GradientStop Color="#"/> 
  79. <GradientStop Offset="" Color="#ADDD"/> 
  80. </LinearGradientBrush> 
  81. </Rectangle.Fill> 
  82. </Rectangle> 
  83. <Rectangle Stroke="Black" StrokeThickness="" Width="" Margin=",,.,." HorizontalAlignment="Right" Height=""
  84. <Rectangle.Fill> 
  85. <LinearGradientBrush EndPoint=".," StartPoint=".,"
  86. <GradientStop Color="#"/> 
  87. <GradientStop Offset="" Color="#ADDD"/> 
  88. </LinearGradientBrush> 
  89. </Rectangle.Fill> 
  90. </Rectangle> 
  91. <Rectangle Height="" Margin=",,.," Stroke="Black" StrokeThickness="" VerticalAlignment="Top"
  92. <Rectangle.Fill> 
  93. <LinearGradientBrush EndPoint=".," StartPoint=".,"
  94. <GradientStop Color="#FFFFFF"/> 
  95. <GradientStop Offset="" Color="#ADDD"/> 
  96. </LinearGradientBrush> 
  97. </Rectangle.Fill> 
  98. </Rectangle> 
  99. <!--上导航栏--> 
  100. <TabControl Name="tab" Grid.RowSpan="" Margin="" Style="{DynamicResource TabControlStyle}" Grid.Row="" Background="{x:Null}" SelectionChanged="TabControl_SelectionChanged"
  101. <TabItem Header="电脑体验" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}" TextOptions.TextFormattingMode="Display"
  102. <TabItem.Background> 
  103. <ImageBrush ImageSource="styles/skin/ico/ico_Examine.png"/> 
  104. </TabItem.Background> 
  105. <Grid Margin="" Background="{DynamicResource MyBrush}"
  106. <Grid.ColumnDefinitions> 
  107. <ColumnDefinition Width=".*"/> 
  108. <ColumnDefinition Width=".*"/> 
  109. <ColumnDefinition Width=".*"/> 
  110. </Grid.ColumnDefinitions> 
  111. <Grid.RowDefinitions> 
  112. <RowDefinition Height="."/> 
  113. <RowDefinition Height="."/> 
  114. <RowDefinition Height="."/> 
  115. <RowDefinition Height="."/> 
  116. </Grid.RowDefinitions> 
  117. <!--详细--> 
  118. <Label Content="电脑体检" HorizontalAlignment="Left" Margin="" Width="." Height="" FontSize="." FontWeight="Bold" Grid.Column="" Grid.Row="" Grid.ColumnSpan="" /> 
  119. <pageTransitions:PageTransition Name="pTransitionControl_" Margin="" TransitionType="SlideAndFade" Grid.Column="" Grid.Row="" Grid.ColumnSpan="" Grid.RowSpan=""/> 
  120. </Grid> 
  121. </TabItem> 
  122. <TabItem Header="查杀木马" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}"
  123. <TabItem.Background> 
  124. <ImageBrush ImageSource="styles/skin/ico/ico_dsmain.png"/> 
  125. </TabItem.Background> 
  126. <Grid Margin="" Background="{DynamicResource MyBrush}"
  127. <Grid.ColumnDefinitions> 
  128. <ColumnDefinition Width=".*"/> 
  129. <ColumnDefinition Width=".*"/> 
  130. <ColumnDefinition Width=".*"/> 
  131. </Grid.ColumnDefinitions> 
  132. <Grid.RowDefinitions> 
  133. <RowDefinition Height="."/> 
  134. <RowDefinition Height="."/> 
  135. <RowDefinition Height="."/> 
  136. <RowDefinition Height="."/> 
  137. </Grid.RowDefinitions> 
  138. <!--详细--> 
  139. <Label Content="查杀木马" HorizontalAlignment="Left" Margin="" Width="." Height="" FontSize="." FontWeight="Bold" Grid.Column="" Grid.Row="" Grid.ColumnSpan="" /> 
  140. <pageTransitions:PageTransition Name="pTransitionControl_" Margin="" TransitionType="SlideAndFade" Grid.Column="" Grid.Row="" Grid.ColumnSpan="" Grid.RowSpan=""/> 
  141. </Grid> 
  142. </TabItem> 
  143. <TabItem Header="清理插件" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}"
  144. <TabItem.Background> 
  145. <ImageBrush ImageSource="styles/skin/ico/ico_PluginCleaner.png"/> 
  146. </TabItem.Background> 
  147. <Grid Margin="" Background="{DynamicResource MyBrush}"
  148. <Grid.ColumnDefinitions> 
  149. <ColumnDefinition Width=".*"/> 
  150. <ColumnDefinition Width=".*"/> 
  151. <ColumnDefinition Width=".*"/> 
  152. </Grid.ColumnDefinitions> 
  153. <Grid.RowDefinitions> 
  154. <RowDefinition Height="."/> 
  155. <RowDefinition Height="."/> 
  156. <RowDefinition Height="."/> 
  157. <RowDefinition Height="."/> 
  158. </Grid.RowDefinitions> 
  159. <!--详细--> 
  160. <Label Content="清理插件" HorizontalAlignment="Left" Margin="" Width="." Height="" FontSize="." FontWeight="Bold" Grid.Column="" Grid.Row="" Grid.ColumnSpan="" /> 
  161. <pageTransitions:PageTransition Name="pTransitionControl_" Margin="" TransitionType="SlideAndFade" Grid.Column="" Grid.Row="" Grid.ColumnSpan="" Grid.RowSpan=""/> 
  162. </Grid> 
  163. </TabItem> 
  164. <TabItem Header="修复漏洞" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}"
  165. <TabItem.Background> 
  166. <ImageBrush ImageSource="styles/skin/ico/ico_VulRepair.png"/> 
  167. </TabItem.Background> 
  168. <Grid Background="{DynamicResource MyBrush}"/> 
  169. </TabItem> 
  170. <TabItem Header="清理垃圾" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}"
  171. <TabItem.Background> 
  172. <ImageBrush ImageSource="styles/skin/ico/ico_RubbishCleaner.png"/> 
  173. </TabItem.Background> 
  174. <Grid Background="{DynamicResource MyBrush}"/> 
  175. </TabItem> 
  176. <TabItem Header="清理痕迹" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}"
  177. <TabItem.Background> 
  178. <ImageBrush ImageSource="styles/skin/ico/ico_TraceCleaner.png"/> 
  179. </TabItem.Background> 
  180. <Grid Background="{DynamicResource MyBrush}"/> 
  181. </TabItem> 
  182. <TabItem Header="系统修复" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}"
  183. <TabItem.Background> 
  184. <ImageBrush ImageSource="styles/skin/ico/ico_SysRepair.png"/> 
  185. </TabItem.Background> 
  186. <Grid Background="{DynamicResource MyBrush}"/> 
  187. </TabItem> 
  188. <TabItem Header="功能大全" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}"
  189. <TabItem.Background> 
  190. <ImageBrush ImageSource="styles/skin/ico/ico_AdvTools.png"/> 
  191. </TabItem.Background> 
  192. <Grid Background="{DynamicResource MyBrush}"/> 
  193. </TabItem> 
  194. <TabItem Header="软件管家" Height="" Margin=",,," Width="" Style="{DynamicResource TabItemStyle}"
  195. <TabItem.Background> 
  196. <ImageBrush ImageSource="styles/skin/ico/ico_softmgr.png"/> 
  197. </TabItem.Background> 
  198. <Grid Background="{DynamicResource MyBrush}"/> 
  199. </TabItem> 
  200. </TabControl> 
  201. <!--导航详细--> 
  202. <!--下状态栏--> 
  203. <Label Content="欢迎使用仿系统" Margin="" Grid.Row="" Foreground="#AEFF" FontWeight="Bold" BorderThickness="" BorderBrush="White" HorizontalAlignment="Left" Width="." TextOptions.TextFormattingMode="Display" /> 
  204. <Label Content="已连接网络" Margin="" Grid.Row="" Foreground="#AEFF" FontWeight="Bold" BorderThickness="" BorderBrush="White" HorizontalAlignment="Right" Width="" TextOptions.TextFormattingMode="Display" /> 
  205. </Grid> 
  206. </Border> 
  207. </Window> 
  208.  
  209. using System; 
  210. using System.Collections.Generic; 
  211. using System.Linq; 
  212. using System.Text; 
  213. using System.Threading.Tasks; 
  214. using System.Windows; 
  215. using System.Windows.Controls; 
  216. using System.Windows.Data; 
  217. using System.Windows.Documents; 
  218. using System.Windows.Input; 
  219. using System.Windows.Media; 
  220. using System.Windows.Media.Imaging; 
  221. using System.Windows.Shapes; 
  222. namespace _UI 
  223. /// <summary> 
  224. /// LikeMain.xaml 的交互逻辑 
  225. /// </summary> 
  226. public partial class LikeMain : Window 
  227. public LikeMain() 
  228. InitializeComponent(); 
  229. private void closeButton_Click(object sender, RoutedEventArgs e) 
  230. this.Close(); 
  231. private void maxButton_Click(object sender, RoutedEventArgs e) 
  232. if (WindowState == WindowState.Normal) 
  233. WindowState = WindowState.Maximized; 
  234. else 
  235. WindowState = WindowState.Normal;  
  236. private void mniButton_Click(object sender, RoutedEventArgs e) 
  237. this.WindowState = WindowState.Minimized; 
  238. private void menuButton_Click(object sender, RoutedEventArgs e) 
  239. Menu.IsOpen = true
  240. private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
  241. //拖动 
  242. this.DragMove(); 
  243. private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e) 
  244. int index = this.tab.SelectedIndex; 
  245. if (index == ) 
  246. //可以设置TransitionType WpfPage 来更改界面出入的动画效果 
  247. //this.pTransitionControl_.TransitionType = WpfPageTransitions.PageTransitionType.SpinAndFade; 
  248. pages.index newPage = new pages.index(); 
  249. this.pTransitionControl_.ShowPage(newPage); 
  250. else if (index == ) 
  251. pages.scan newPage = new pages.scan(); 
  252. this.pTransitionControl_.ShowPage(newPage); 
  253. else if (index == ) 
  254. pages.scan newPage = new pages.scan(); 
  255. this.pTransitionControl_.ShowPage(newPage); 
  256. else 
  257. pages.index newPage = new pages.index(); 
  258. this.pTransitionControl_.ShowPage(newPage); 

当用户单击Tab页签时(切换事件),程序 用pages.index newPage = new pages.index();先实例化一个page子页面(实际继承UserControl),然后调用 this.pTransitionControl_1.ShowPage(newPage);将子页面进行加载(本质上是pTransitionControl_1.Content=newpage)。

4、运行代码,界面如下:

WPF实现类似360安全卫士界面的程序源码分享

下面是360安全卫士界面截图,可对比一下,还是比较相似的。

WPF实现类似360安全卫士界面的程序源码分享

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表