【.Net码农】WPF界面—仿360安全卫士9.0界面

2023-10-21 06:50

本文主要是介绍【.Net码农】WPF界面—仿360安全卫士9.0界面,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://blog.csdn.net/ljf5566/article/details/8758922


主要思路如下:

该界面主要有三大部分

第一部分:标题栏部分就是最上面那一行

第二部分:内容区域(也就是页标签部分)

第三部分:换肤部分(点击换肤小按钮弹出的内容部分)

根据分析我们可以使用一个有两行的网格(Grid)进行布局,第一行“标题栏”部分;第二行“页标签部分”,对于“换肤部分”是直接显示在当前界面之上的内容,使用"Popup"标签实现。

代码很长,我只粘贴部分代码,随后将上传至资源区


1、定义无边框窗体样式和Button样式

  1. <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  2.                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">  
  3.     <!--无边框的窗体样式-->  
  4.     <Style x:Key="NoResize_window" TargetType="{x:Type Window}">  
  5.         <Setter Property="AllowsTransparency" Value="true"/>  
  6.         <Setter Property="Background" Value="Transparent"/>  
  7.         <!-- <Setter Property="ResizeMode" Value="CanResizeWithGrip"/>-->  
  8.         <Setter Property="WindowStyle" Value="None"/>  
  9.         <Setter Property="Template">  
  10.             <Setter.Value>  
  11.                 <ControlTemplate TargetType="{x:Type Window}">  
  12.                     <Grid Margin="5">  
  13.                         <Rectangle Fill="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"    >  
  14.                             <Rectangle.Effect>  
  15.                                 <DropShadowEffect BlurRadius="5" ShadowDepth="0"/>  
  16.                             </Rectangle.Effect>  
  17.                         </Rectangle>  
  18.                         <Border Background="{TemplateBinding Background}"      
  19.                         BorderBrush="{TemplateBinding BorderBrush}"      
  20.                         BorderThickness="{TemplateBinding BorderThickness}"      
  21.                         Padding="{TemplateBinding Margin}"      
  22.                         SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">  
  23.                             <ContentPresenter />  
  24.                         </Border>  
  25.                     </Grid>  
  26.                 </ControlTemplate>  
  27.             </Setter.Value>  
  28.         </Setter>  
  29.     </Style>  
  30.     <!--Button样式-->  
  31.     <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">  
  32.         <Setter Property="Template">  
  33.             <Setter.Value>  
  34.                 <ControlTemplate TargetType="{x:Type Button}">  
  35.                     <Grid>  
  36.                         <VisualStateManager.VisualStateGroups>  
  37.                             <VisualStateGroup x:Name="CommonStates">  
  38.                                 <VisualState x:Name="MouseOver"/>  
  39.                                 <VisualState x:Name="Pressed"/>  
  40.                                 <VisualState x:Name="Disabled"/>  
  41.                             </VisualStateGroup>  
  42.                             <VisualStateGroup x:Name="FocusStates">  
  43.                                 <VisualState x:Name="Focused"/>  
  44.                             </VisualStateGroup>  
  45.                             <VisualStateGroup x:Name="ValidationStates">  
  46.                                 <VisualState x:Name="InvalidFocused"/>  
  47.                                 <VisualState x:Name="InvalidUnfocused"/>  
  48.                             </VisualStateGroup>  
  49.                         </VisualStateManager.VisualStateGroups>  
  50.                         <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Margin="5">  
  51.                             <Border.Effect>  
  52.                                 <DropShadowEffect ShadowDepth="0" Opacity="0.85"/>  
  53.                             </Border.Effect>  
  54.                         </Border>  
  55.                         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Content="{TemplateBinding Content}"/>  
  56.                     </Grid>  
  57.                     <ControlTemplate.Triggers>  
  58.                         <Trigger Property="IsFocused" Value="True"/>  
  59.                         <Trigger Property="IsDefaulted" Value="True"/>  
  60.                         <Trigger Property="IsMouseOver" Value="True">  
  61.                             <Setter Property="Effect" TargetName="border">  
  62.                                 <Setter.Value>  
  63.                                     <DropShadowEffect Color="#FF00F3FF" Opacity="0.85" ShadowDepth="0"/>  
  64.                                 </Setter.Value>  
  65.                             </Setter>  
  66.                         </Trigger>  
  67.                         <Trigger Property="IsPressed" Value="True"/>  
  68.                         <Trigger Property="IsEnabled" Value="False"/>  
  69.                     </ControlTemplate.Triggers>  
  70.                 </ControlTemplate>  
  71.             </Setter.Value>  
  72.         </Setter>  
  73.     </Style>  
  74.     <!-- Resource dictionary entries should be defined here. -->  
  75. </ResourceDictionary>  


2、逻辑处理代码

  1. using System;  
  2. using System.Windows;  
  3. using System.Windows.Controls;  
  4. using System.Windows.Media;  
  5. using System.Xml;  
  6.   
  7. namespace _360UI9  
  8. {  
  9.     /// <summary>  
  10.     /// MainWindow.xaml 的交互逻辑  
  11.     /// </summary>  
  12.     public partial class MainWindow : Window  
  13.     {  
  14.         public MainWindow()  
  15.         {  
  16.             InitializeComponent();  
  17.             this.Loaded += MainWindow_Loaded;  
  18.         }  
  19.   
  20.         void MainWindow_Loaded(object sender, RoutedEventArgs e)  
  21.         {  
  22.             //窗体加载的时候获取保存的皮肤  
  23.             XmlDocument doc = new XmlDocument();  
  24.             string xmlpath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "skin.xml";  
  25.             doc.Load(xmlpath);  
  26.             XmlNode xnode = doc.SelectSingleNode("bd");  
  27.             XmlElement xe = (XmlElement)xnode["skin"];  
  28.             skinbrush.Background = App.Current.FindResource(xe.GetAttribute("name")) as Brush;  
  29.         }  
  30.         //换肤  
  31.         private void btnChangeSkin_Click(object sender, RoutedEventArgs e)  
  32.         {  
  33.             //显示换肤界面  
  34.             skinui.IsOpen = true;  
  35.         }  
  36.         //反馈  
  37.         private void btnFeedback_Click(object sender, RoutedEventArgs e)  
  38.         {  
  39.   
  40.         }  
  41.         //最小化  
  42.         private void btnMin_Click(object sender, RoutedEventArgs e)  
  43.         {  
  44.             this.WindowState = System.Windows.WindowState.Minimized;  
  45.         }  
  46.         //主菜单  
  47.         private void btnMainMenu_Click(object sender, RoutedEventArgs e)  
  48.         {  
  49.   
  50.         }  
  51.         //最大化  
  52.         private void btnMax_Click(object sender, RoutedEventArgs e)  
  53.         {  
  54.             if (this.WindowState != System.Windows.WindowState.Maximized)  
  55.             {  
  56.                 this.WindowState = System.Windows.WindowState.Maximized;  
  57.             }  
  58.             else  
  59.             {  
  60.                 this.WindowState = System.Windows.WindowState.Normal;  
  61.             }  
  62.         }  
  63.         //关闭  
  64.         private void btnClose_Click(object sender, RoutedEventArgs e)  
  65.         {  
  66.             this.Close();  
  67.         }  
  68.         //实现换肤  
  69.         private void ChangeSkin(object sender, RoutedEventArgs e)  
  70.         {  
  71.             Button bt = (Button)sender;  
  72.             skinbrush.Background = App.Current.FindResource(bt.Name) as Brush;  
  73.             //将选择的皮肤保存到XML文件  
  74.             XmlDocument doc = new XmlDocument();  
  75.             string xmlpath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "skin.xml";  
  76.             doc.Load(xmlpath);  
  77.             XmlNode xnode = doc.SelectSingleNode("bd");  
  78.             XmlElement xe = (XmlElement)xnode["skin"];  
  79.             xe.SetAttribute("name", bt.Name);  
  80.             doc.Save(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "skin.xml");  
  81.         }  
  82.     }  
  83. }  

效果如下:



源代码下载:点击打开链接


这篇关于【.Net码农】WPF界面—仿360安全卫士9.0界面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/252673

相关文章

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬

centOS7.0设置默认进入字符界面

刚装的,带有x window桌面,每次都是进的桌面,想改成自动进命令行的。记得以前是修改 /etc/inittab 但是这个版本inittab里的内容不一样了没有id:x:initdefault这一行而且我手动加上也不管用,这个centos 7下 /etc/inittab 的内容 Targets systemd uses targets which serve a simil

Appium--界面元素选择

在操作界面元素前,我们需要进行手机与电脑的连接,这里介绍一个adb无线连接的方法: Adb无线连接功能 无线连接步骤(确保手机和电脑处于同一局域网) 1先以USB有线连接方式连接到计算机 2激活手机adb的无线服务: 命令行输入adb tcpip 5555(5555是端口号) 3计算机以无线方式连接到手机: 命令行输入adb connect 配置信息 desired_caps:这些键值对告诉ap

.NET 自定义过滤器 - ActionFilterAttribute

这个代码片段定义了一个自定义的 ASP.NET Core 过滤器(GuardModelStateAttribute),用于在控制器动作执行之前验证模型状态(ModelState)。如果模型状态无效,则构造一个 ProblemDetails 对象来描述错误,并返回一个 BadRequest 响应。 代码片段: /// <summary>/// 验证 ModelState 是否有效/// </

WPF入门到跪下 第十三章 3D绘图 - 3D绘图基础

3D绘图基础 四大要点 WPF中的3D绘图涉及4个要点: 视口,用来驻留3D内容3D对象照亮部分或整个3D场景的光源摄像机,提供在3D场景中进行观察的视点 一、视口 要展示3D内容,首先需要一个容器来装载3D内容。在WPF中,这个容器就是Viewport3D(3D视口),它继承自FrameworkElement,因此可以像其他元素那样在XAML中使用。 Viewport3D与其他元素相

.Net Mvc-导出PDF-思路方案

效果图: 导语:     在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;     因此小客在这里整理一下自己导出PDF的一些思路,供大家参考。     网上有很多导出PDF运用到的插件,大家也可以看看其他插件的使用,学习学习; 提要:     这里我使用的是-iTextSharp,供大家参考参考,借鉴方案,完善思路,补充自己,一起学习

.net MVC 导出Word--思路详解

序言:          一般在项目的开发过程中,总会接收到一个个需求,其中将数据转换成Work来下载,是一个很常见的需求;          那么,我们改如何处理这种需求,并输出实现呢?          在做的过程中,去思考 1、第一步:首先确认,Work的存在位置,并创建字符输出路:             //在的项目中创建一个存储work的文件夹             string