WPF界面设计中常用的一些代码片段及属性
一、窗体去掉标题栏、消除掉标题栏后的白边,把窗体置于屏幕中间,窗口大小不能改变。
WindowStyle="None" AllowsTransparency="True" WindowStartupLocation="CenterScreen" ResizeMode="NoResize"
二、窗口可拖动
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e); // 获取鼠标相对标题栏位置
Point position = e.GetPosition(gridTitleBar);//gridTiltleBar一般是最外层控件的Name属性即可。 // 如果鼠标位置在标题栏内,允许拖动
if (e.LeftButton == MouseButtonState.Pressed)
{
if (position.X >= && position.X < gridTitleBar.ActualWidth && position.Y >= && position.Y < gridTitleBar.ActualHeight)
{
this.DragMove();
}
}
}
三、设置Image元素的图片。
BitmapImage image = new BitmapImage(new Uri(@"./Images/pic_01_4.png", UriKind.Relative));//@"./Images/pic_01_4.png"为图片路径
this.img_Camera.Source = image;//img_Camera为image的Name属性值
四、按钮的样式(鼠标hover时的样式,鼠标按下时的样式,以及普通状态下的样式),把这段代码放到App.xaml的<Application.Resources>节点下。
<Style x:Key="SltBtnMinimized" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border>
<Image x:Name="imgContent" Source="Images/wintl_mini_normal.png" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="imgContent" Property="Source" Value="Images/wintl_mini_hover.png"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="imgContent" Property="Source" Value="Images/wintl_mini_press.png"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
引用的时候,
<Button Width="30" Height="26" x:Name="btn_Close" ToolTip="关闭" Style="{StaticResource BtnCloseStyle}"/>
五、复选框
<Style x:Key="CheckBoxTemplate" TargetType="{x:Type CheckBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal">
<Border>
<Image x:Name="imageCheckBox" Source="Resources/check_normal.png" Width="18" Height="18" />
</Border>
<ContentPresenter VerticalAlignment="Center" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="imageCheckBox" Property="Source" Value="Resources/check_normal.png" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="imageCheckBox" Property="Source" Value="Resources/check_press.png" />
</Trigger>
<Trigger Property="IsChecked" Value="{x:Null}" >
<Setter TargetName="imageCheckBox" Property="Source" Value="/Resources/check_hover.png" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
六、下拉箭头
<CheckBox Name="chkMore" HorizontalAlignment="Right" Margin="0,0,65,0" VerticalAlignment="Center" Style="{StaticResource MoreCheckBoxTemplate}" LostFocus="chkMore_LostFocus"/>
<Popup Width="60" IsOpen="{Binding ElementName=chkMore,Path=IsChecked}" PlacementTarget="{Binding ElementName=chkMore}" AllowsTransparency="True" PopupAnimation="Fade">
<WrapPanel Width="60">
<Button Name="btnMenuSetting" HorizontalAlignment="Right" VerticalAlignment="Center" Style="{StaticResource SettingMenuButtonTemplate}" Click="btnMenuSetting_Click"/>
<Button Name="btnMenuAbout" HorizontalAlignment="Right" VerticalAlignment="Center" Style="{StaticResource AboutMenuButtonTemplate}" Click="btnMenuAbout_Click"/>
</WrapPanel>
</Popup>
checkbox对应的Style在App.xmal中
<Style x:Key="MoreCheckBoxTemplate" TargetType="{x:Type CheckBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal" Height="28">
<Border>
<Image x:Name="imageCheckBox" Source="Resources/btn_more_normal.png" Width="28" Height="28" />
</Border>
<ContentPresenter VerticalAlignment="Center" />
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="imageCheckBox" Property="Source" Value="Resources/btn_more_normal.png" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="imageCheckBox" Property="Source" Value="Resources/btn_more_press.png" />
</Trigger>
<Trigger Property="IsChecked" Value="{x:Null}" >
<Setter TargetName="imageCheckBox" Property="Source" Value="/Resources/btn_more_hover.png" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
七、控件无边框
BorderThickness="0"
八、控件底色透明
Background="Transparent"
九、渐变色GradientBrush画圆
<Ellipse Width="120" Height="120">
<Ellipse.Fill>
<RadialGradientBrush GradientOrigin="0.25,0.25" RadiusX="0.75" RadiusY="0.75">
<RadialGradientBrush.GradientStops>
<GradientStop Offset="0" Color="White"></GradientStop>
<GradientStop Offset="0.65" Color="Black"></GradientStop>
<GradientStop Offset="0.8" Color="Gray"></GradientStop>
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
效果如下:
WPF界面设计中常用的一些代码片段及属性的更多相关文章
- WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心
原文:WPF界面设计技巧(11)-认知流文档 & 小议WPF的野心 流文档是WPF中的一种独特的文档承载格式,它的书写和呈现方式都很像HTML,它也几乎具备了HTML的绝大多数优势,并提供了更 ...
- WPF界面设计技巧(10)-样式的继承
原文:WPF界面设计技巧(10)-样式的继承 PS:现在我的MailMail完工了,进入内测阶段了,终于可以腾出手来写写教程了哈,关于MailMail的介绍及内测程序索取:http://www.cnb ...
- WPF界面设计技巧(8)—自制山寨版CheckListBox
原文:WPF界面设计技巧(8)-自制山寨版CheckListBox 近年来IT市场山寨横行啊,我们今天也来发扬一下山寨精神,搞个自制的CheckListBox出来. 喏,CheckListBox 就是 ...
- WPF界面设计技巧(7)—模拟电梯升降的缓动动画
原文:WPF界面设计技巧(7)-模拟电梯升降的缓动动画 如同Flash一样,WPF的亮点之一也在于其擅于表现平滑的动画效果,但以移动动画来说,仅凭简单的起始位置.目标位置,所产生的动画仍会非常生硬,这 ...
- WPF界面设计技巧(5)—自定义列表项呈现内容
原文:WPF界面设计技巧(5)-自定义列表项呈现内容 接续上次的程序,稍微改动一下原有样式,并添加一个数据模板,我们就可以达成下面这样的显示功能: 鼠标悬停于文件列表项上,会在工具提示中显示图像缩略图 ...
- WPF界面设计技巧(4)—自定义列表项样式
原文:WPF界面设计技巧(4)-自定义列表项样式 有前面修改按钮样式的基础,我们可以尝试来定制一个即好看又好用的 ListBox ,今天先来讲“好看”部分. 打开 Microsoft Visual S ...
- WPF界面设计技巧(3)—实现不规则动画按钮
原文:WPF界面设计技巧(3)-实现不规则动画按钮 发布了定义WPF按钮的教程后,有朋友问能否实现不规则形状的按钮,今天我们就来讲一下不规则按钮的制作. 不规则按钮的做法实际上和先前我们做不规则窗体的 ...
- WPF界面设计技巧(2)—自定义漂亮的按钮样式
原文:WPF界面设计技巧(2)-自定义漂亮的按钮样式 上次做了个很酷的不规则窗体,这次我们来弄点好看的按钮出来,此次将采用纯代码来设计按钮样式,不需要 Microsoft Expression Des ...
- WPF界面设计技巧(1)—不规则窗体图文指南
原文:WPF界面设计技巧(1)-不规则窗体图文指南 初到园子,奉上第一篇入门级教程,请勿见笑. 以往WinForm编程中,实现不规则窗体是有一定难度的,更难的是不规则窗体的边缘抗锯齿及局部透明处理.而 ...
随机推荐
- PKPM快捷键
e删除sc删除节点hq绘制直线墙lbz布置梁zz楼层组装bsc板生成bxg板修改门窗洞dbz(洞布置)全房间洞(fd)正交轴网zww拉伸s
- JS函数 函数的作用,可以写一次代码,然后反复地重用这个代码。
什么是函数 函数的作用,可以写一次代码,然后反复地重用这个代码. 如:我们要完成多组数和的功能. var sum; sum = 3+2; alert(sum); sum=7+8 ; alert(sum ...
- leetcode-第10周双周赛-5099验证回文字符串③
题目描述: 方法:动态规划 class Solution: def isValidPalindrome(self, s: str, k: int) -> bool: def isKPalRec( ...
- thinkphp 默认值输出
我们可以给变量输出提供默认值,例如: 大理石平台厂家 {$user.nickname|default="这家伙很懒,什么也没留下"} 对系统变量依然可以支持默认值输出,例如: {$ ...
- thinkphp 伪静态
URL伪静态通常是为了满足更好的SEO效果,ThinkPHP支持伪静态URL设置,可以通过设置URL_HTML_SUFFIX参数随意在URL的最后增加你想要的静态后缀,而不会影响当前操作的正常执行.例 ...
- 模式识别原理(Pattern Recognition)、概念、系统、特征选择和特征
§1.1 模式识别的基本概念 一.广义定义 1.模式:一个客观事物的描述,一个可用来仿效的完善的例子. 2.模式识别:按哲学的定义是一个“外部信息到达感觉器官,并被转换成有意义的感觉经验”的过程. 例 ...
- python非对称加密模块rsa
一.代码 # 导入rsa库 import rsa.common class RSA(object): def __init__(self): self.key= rsa.newkeys(256) se ...
- 如何打开rdb文件
后缀名是RDB用什么软件打开不能用记事本打开后是乱码不知用什么软件写入的... RDB文件是QQ2009SP以后的替代DB文件的一种新的文件格式,是一种数据库文件请下载 百度搜索下载:rdb打包解包工 ...
- SPSS分析:Bootstrap
SPSS分析:Bootstrap 一.原理: 非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法,也称为自助法.其核心思想和基本步骤如下: 1.采用重抽样技术从原始样本中抽取一定数量(自己 ...
- UVA 511 Do You Know the Way to San Jose?
题目链接:https://vjudge.net/problem/UVA-511 题目翻译摘自<算法禁赛入门经典> 题目大意 有 n 张地图(已知名称和某两个对角线端点的坐标)和 m 个地名 ...