最近一直在搞wpf相关的东东,由于还在门外徘徊,所以第一篇blog写了简单的制作扁平化的wpf button样式,这一篇也简单的制作属于自己wpf 窗体的样式。
废话少说,下面就开始制作自己的窗体样式之旅(建立wpf工程就不在这里赘述):
设置自己的窗体要隐藏默认窗体title,需要设置windows的属性: AllowsTransparency 为 true ,
注意:当AllowsTransparency 为true时,WindowStyle.None 是 WindowStyle 的唯一有效值。并且设置windows的Background="Transparent",为透明的效果。
通过上面设置,默认windows的样式就变成透明的了,下面就来设置自己的颜色背景的窗体:
窗体主要有两部分,上面的Head,现实标题和,关闭,最大化,最小化按钮、另一部分是现实内容。
我们就把windows分成两部分,上面部分的height设置为30,用来放置窗体的标题和按钮。下面部分为现实内容。
代码如下:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid Name="Title">
//title
</Grid>
<Grid Grid.Row="1" Background="White">
//content
</Grid>
</Grid>

上面完成后,就来填充title部分添加如下代码:
<TextBlock HorizontalAlignment="Left" VerticalAlignment="Center"> My window</TextBlock>
<Button Content="X" HorizontalAlignment="Right" Margin="0,0,5,0" Height="20" Width="20" Style="{DynamicResource myBtnStyle}" VerticalAlignment="Center" Click="Button_Click" />

注:上面的按钮样式为本人上篇博客的设计的简单按钮样式。
现实窗体的名称和关闭按钮。
到现在为止,窗体的基本样式算是搞定了,但是如果一个窗体一直在那里,不能够自由移动,是什么样的一种心情呢。!!惆怅加寂寞。。。!那就人道点,给点自由吧,不做独裁的coder。
在name为title的grid上面添加MouseDown事件:MouseDown="Grid_MouseDown"
具体后台代码实现:
if (e.LeftButton == MouseButtonState.Pressed)
{
DragMove();
}

实现左键按下拖动窗体。可以拖动的窗体还是舒服啊。哎
到目前为止,有人要问了,你看别人的窗体基本上是圆角的,不能out的一直用尖角吧?那好吧,本人好人一个,就给你圆角的窗体。
在最外层的grid外面加上border标签,进行圆角窗体的设计。
设置其  CornerRadius="4"实现圆角效果。
ok了,一个简单的个性的窗体就实现了,看效果图:
代码XAML:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfAppBlog.MainWindow"
x:Name="Window" Background="Transparent"
Title="MainWindow" AllowsTransparency="True" WindowStyle="None"
Width="640" Height="480"><Window.Resources><Style x:Key="myBtnStyle" TargetType="{x:Type Button}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type Button}"><Grid><Grid.ColumnDefinitions><ColumnDefinition x:Name="columnDefinition1" Width="0.982*"/><ColumnDefinition x:Name="columnDefinition" Width="0.018*"/></Grid.ColumnDefinitions><Rectangle x:Name="rectangle" RadiusY="2" RadiusX="2" Stroke="{x:Null}" Fill="#FF0DAD5F" Grid.ColumnSpan="2"/><ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/></Grid><ControlTemplate.Triggers><Trigger Property="IsFocused" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#FF0EED80"/></Trigger><Trigger Property="IsDefaulted" Value="True"><Setter Property="Fill" TargetName="rectangle" Value="#FF0DAD5F"/><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/></Trigger><Trigger Property="IsMouseOver" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#FF83D245"/></Trigger><Trigger Property="IsPressed" Value="True"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="#FF17D256"/><Setter Property="Width" TargetName="columnDefinition" Value="Auto"/><Setter Property="MinWidth" TargetName="columnDefinition" Value="0"/><Setter Property="Width" TargetName="columnDefinition1" Value="*"/></Trigger><Trigger Property="IsEnabled" Value="False"><Setter Property="Stroke" TargetName="rectangle" Value="{x:Null}"/><Setter Property="Fill" TargetName="rectangle" Value="{x:Null}"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></Window.Resources><Border  BorderBrush="#FF0DAD5F" BorderThickness="3" CornerRadius="4"><Grid ><Grid.RowDefinitions><RowDefinition Height="30"></RowDefinition><RowDefinition></RowDefinition></Grid.RowDefinitions><Border Background="#FF0DAD5F" MouseDown="Grid_MouseDown" CornerRadius="2,2,0,0"><Grid Name="Title"><TextBlock HorizontalAlignment="Left" VerticalAlignment="Center"> My window</TextBlock><Button Content="X"  Foreground="White"  HorizontalAlignment="Right" Margin="0,0,5,0" Height="20" Width="20" Style="{DynamicResource myBtnStyle}" VerticalAlignment="Center" Click="Button_Click" /></Grid></Border><Grid Grid.Row="1" Background="White"><Button Content="Button" Height="56" Margin="130,127,209,0" Style="{DynamicResource myBtnStyle}" VerticalAlignment="Top"/></Grid></Grid></Border>
</Window>

View Code

后台:

 1  private void Button_Click(object sender, RoutedEventArgs e)
 2         {
 3             this.Close();
 4         }
 5
 6         private void Grid_MouseDown(object sender, MouseButtonEventArgs e)
 7         {
 8             if (e.LeftButton == MouseButtonState.Pressed)
 9             {
10                 DragMove();
11             }
12         }

View Code

本次制作的简单的窗体,title上面的按钮只实现了关闭按钮,最大化、最小化按钮没有实现,下次有机会才完成了。

转载于:https://www.cnblogs.com/Aeryoure/p/3306582.html

Wpf 简单制作自己的窗体样式相关推荐

  1. 01.WPF中制作无边框窗体

    [引用:]http://blog.csdn.net/johnsuna/article/details/1893319 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormBor ...

  2. [转]使用Visual C#制作可伸缩个性化窗体

    转自:http://www.microsoft.com/china/community/Column/60.mspx 专栏作品 使用Visual C#制作可伸缩个性化窗体 卢彦 引言: 谁都希望自己的 ...

  3. 使用一个统一的窗体样式风格

    目录 明确定义什么样式 抛弃原始样式 定义圆角窗体样式 调整窗体最大化最小化和关闭样式 定义样式文件 使用统一样式的方式 引用样式达到达到统一风格 窗体的事件处理 窗体拖动事件处理 窗体大小调整事件处 ...

  4. qt登录界面简单制作,是真的保姆级别了!!!

    qt登录界面简单制作,是真的保姆级别了!!! 第二周工程创新实践:创建一个窗体,设计用户登录的界面(含有用户名.密码),并实现用户登录的功能,要求用户提交的登录按钮时能获取界面中的用户名.密码数据并与 ...

  5. mapboxgl+echarts 简单制作专题地图

    mapboxgl+echarts 简单制作专题地图 实现效果 思路 实现过程 全部代码 实现效果 思路 1.引用mapboxgl脚本库及样式库与echart脚本库. 2.准备专题数据,此处我们使用模拟 ...

  6. php 心电图,用ps简单制作漂亮的心电图文字效果

    这篇教程是向脚本之家介绍用ps简单制作漂亮的心电图文字效果方法,教程制作出来的心电图文字效果非常漂亮,难度不是很大,推荐到脚本之家,喜欢的朋友快快来学习吧 这篇教程主要是向脚本之家的朋友介绍用ps简单 ...

  7. HTML制作色带,PS简单制作一个漂亮的混合色带gif动画效果

    今天为大家介绍PS简单制作一个漂亮的混合色带gif动画效果方法,方法很简单的,教程介绍的很详细,好了,下面我们来看看吧! 先来看看案例的最终效果: 混合颜色带是一种特殊的高级蒙版,它可以快速隐藏像素. ...

  8. html 滤镜制作线条,PS滤镜简单制作炫酷的线条效果

    今天为大家分享利用PS滤镜制作炫酷线条效果方法,教程很不错,值得大家学习,推荐过来,喜欢的朋友快快来学习吧! 步骤 启动PS软件 ctrl+n新建一空白文档,尺寸为 800x600px,背景色设置为黑 ...

  9. WPF中制作带中国农历的万年历

    WPF中制作带中国农历的万年历 原文:WPF中制作带中国农历的万年历 本例应用.net 2.0中的ChineseLunisolarCalendar类,制作出带中国农历的万年历.  先看看效果图片(已缩 ...

最新文章

  1. pandas高级处理-交叉表与透视表
  2. Pycharm 基本快捷键
  3. Java开发者需要了解的移动开发编程语言
  4. 三层架构项目如何发布_以k8s集群管理为例,大牛教你如何设计优秀项目架构
  5. 我是如何从技术转向产品的
  6. 看奥运之一:实力是最重要的
  7. JavaFX技巧17:带有AnchorPane的动画工作台布局
  8. 计算机组装与维护思考问题,计算机组装与维护中的常见问题及解决方法
  9. 用硬盘安装linux物理机,老爷机安装UBUNTU的悲剧之旅(附用GRUB2硬盘安装ubuntu教程)...
  10. 基于 HTML5 WebGL 的 3D 场景中的灯光效果
  11. python in visual studio
  12. oracle 9i,10G,11G,各版本下载资源(使用迅雷),收集好久,分享上来!
  13. t470键盘拆解_联想ThinkPad T470拆机图解教程
  14. 开源开放 | 欧若科技通过 OpenKG 开放 Nebula Graph 图数据库
  15. 3. 二叉哥的二叉树
  16. Swagger API文档Responses中Object类型无法显示,求指引
  17. BaseRecyclerViewAdapterHelper源码解读(四) 上拉加载更多
  18. 远程桌面TeamViewer, 向日葵, NoMachine 和 远程控制MobaXterm软件
  19. 惊艳的产品背后,是锐利的设计思维
  20. solr dih有子查询时速度慢

热门文章

  1. “Google只认钱!机器学习20年没进步”,CMU学者炮轰AI第一大厂
  2. 测测自己最像哪幅名画?谷歌博物馆App新推自拍功能
  3. 亚马逊在德国新设AI研发中心,与马克思普朗克系统研究所亲密合作
  4. 腾讯首发汽车解决方案 助力广汽打造新智能网联云平台
  5. TCMalloc小记【转】
  6. 老男孩第31期杨海学习Linux决心书
  7. Cent OS 重置root密码
  8. ExtJS2.0实用简明教程 - Form布局
  9. (八)java版spring cloud+spring boot+redis多租户社交电子商务平台 -SSO单点登录之OAuth2.0登录认证(2)...
  10. linkscrpit