WPF:完美自定义MeaagseBox 2.0】的更多相关文章

很久前做个一个MessageBox,原文链接:http://www.cnblogs.com/DoNetCoder/p/3843658.html. 不过对比MessageBox还有一些瑕疵.这些天有时间就更新了一下: 1.重载了几个新的Show方法,和官方的MessageBox相差无几了. 2.去掉了最小化按钮(我觉得最小化按钮简直就是画蛇添足) 3.窗体高度可以随着内容的多少随之变化(如果超过了屏幕的高度那还是没办法) 4.消息框的图标的支持 5.消息框弹出音的支持 6.ESC和Enter快捷键…
不知道为什么,WPF的MeaageBox的风格还停留在Win 2000的风格... 很久前就想自己封装一个MessageBox出来,但是都只是简单的封装,不怎么具有通用性.这次终于搞完了. 使用方法和系统的MessageBox的使用方法相似度90%以上.另外10%主要是自己加进去了一些更实用的东西进去. 好,废话不多说. MessageBox经常使用的元素有这些: 1.MessageButton:由于方便以后扩展,这里不使用原生的MessageButton枚举,而是自定义一个枚举: /// <s…
在WPF中自定义窗体标题栏,首先需要将窗体的WindowStyle属性设置为None,隐藏掉WPF窗体的自带标题栏.然后可以在窗体内部自定义一个标题栏. 例如,标题栏如下: <WrapPanel Height="30" MouseMove="TitleBar_MouseMove" MouseDown="TitleBar_MouseDown" Background="#4C9CFB" DockPanel.Dock=&quo…
原文:在WPF中自定义你的绘制(五) 在WPF中自定义你的绘制(五)                                                                   周银辉将我们的绘制转变为画刷WPF中的画刷比GDI+中要强大得多,除了常用的实心画刷.渐变画刷外,还支持更多的平铺画刷,这包括DrawingBrush.ImageBrush.VisualBrush,其中DrawingBrush使得我们可以将自定义的绘制用于任何可以使用普通画刷的地方.比如下面的代码…
原文:在WPF中自定义你的绘制(四)                                   在WPF中自定义你的绘制(四)                                                              周银辉 1,利用路径绘制图形(PathGeometry)有时我们需要绘制的图形可能很复杂而显得不是那么的规则,这时我们就需要将图形分解成若干小的部分(分解成线段.圆弧.贝塞尔曲线等等),然后将这些小部分使用PathGeometry组合在一起…
原文:在WPF中自定义你的绘制(二)   在WPF中自定义你的绘制(二)                                                                   周银辉1,绘制几何图形也许你在使用WPF进行开发的时候已经注意到一个很有意思的现象,要在屏幕上显示一个圆形(椭圆),你可以使用Ellipse对象,如下面的代码所示: <Grid>          <Ellipse Fill="#FFFFFFFF" Stroke=&…
原文:在VS2005中设置WPF中自定义按钮的事件 上篇讲了如何在Blend中绘制圆角矩形(http://blog.csdn.net/johnsuna/archive/2007/08/13/1740781.aspx),本篇继续下一步骤,如何自定义按钮的事件. (1)首先,在VS2005中打开上篇所建的项目(File - Open Project),找到LinearGradientButton.csproj(这是我这里的项目名称),打开之后,双击LinearGradientDemo.xaml.cs…
原文:WPF绘制自定义窗口 WPF是制作界面的一大利器,下面就用WPF模拟一下360的软件管理界面,360软件管理界面如下: 界面不难,主要有如下几个要素: 窗体的圆角 自定义标题栏及按钮 自定义状态栏 窗体的半透明效果 窗体4周有一圈半透明阴影(抓的图上看不出来) 实现思路很简单,首先隐藏默认窗口的标题栏和边框,然后用WPF的Border或Canvas等元素模拟定义窗体的标题栏.内容区和状态栏. 具体实现如下: 第一步:定义义个窗口基类,继承自Window,在构造函数中加载自定义窗口的样式文件…
原文:wpf之自定义滚动条 首先我们添加一个带滚动条的textbox控件: <ScrollViewer Height="130" Width="620" VerticalScrollBarVisibility="Auto" Style="{StaticResource for_scrollviewer}"> <TextBlock xml:space="preserve" Name=&quo…
原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探         最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感觉WPF的开发思维和Winform还是有比较大的区别,包括页面布局.数据绑定.自定义模板等等.       整个项目中,有一个业务逻辑的实现方式,需要我在使用Listview控件中插入Combobox控件,效果如下图:        第一次尝试:为了实现这个效果,我在Xaml文件中定义的代码如下:…
原文:示例:WPF中自定义MessageService应用DialogHost.Snackbar.NotifyIcon显示各种场景提示消息 一.目的:不同交互场景需要提示不同的消息,不同的消息需要用不同的效果来展示,应用DialogHost(对话框).NotifyIcon(消息提示).Snackbar(气泡消息)显示各种场景提示消息,应用在ViewModel中 二.实现: 1.等待对话框 2.确定对话框 3.确定与取消对话框 4.百分比进度和文本进度对话框 5.气泡提示消息(NotifyIcon…
原文:示例:WPF中自定义StoryBoarService在代码中封装StoryBoard.Animation用于简化动画编写 一.目的:通过对StoryBoard和Animation的封装来简化动画的编写 二.示例: 说明:渐隐藏是WPF中比较常用的动画,上图是通过StoryBoarService封装后的效果,在代码中只要执行如下代码即可: DoubleStoryboardEngine.Create(1, 0, 1, "Opacity").Start(element); 上面的关闭效…
原文:在WPF中自定义你的绘制(三) 在WPF中自定义你的绘制(三)                                                                  周银辉图形合并有时候我们需要将多个图形合并成一个然后进行绘制,比如将一个圆形与一个矩形进行合并等. 在WPF的自定义绘制中,有三种方法可以做到,分别是(1)利用GeometryGroup对象:(2)利用CombinedGeometry对象:(3)使用Geometry.Combin()静态方法.其中第…
原文:在WPF中自定义你的绘制(一)   在WPF中自定义你的绘制(一)                                                                    周银辉        在传统的Windows窗体编程中,如果我们需要打造一些比较个性化的控件,那么我们常常需要自定义控件的绘制(重写OnPaint等),即需要经常用到Graphics对象.而在WPF中,我们可以使用Xaml轻松编写出很有特色的界面元素,似乎与以前的以前利用Graphics对象…
根据WPF 完美截图 <一>总结: 1.BitmapSource与BitmapImage及CorppedBitmap之间的转换 2.中心及边角的模板实现及其拖动 3.除了拖动矩形外区域要实现遮罩,遮罩的实现 今天实现第一个技术点,各类型间的转换,代码均为网上搜集. BitmapSourceToBitmapImage转换: private BitmapImage BitmapSourceToBitmapImage(BitmapSource bitmapSource) { var encoder…
.NET Core 3.0已经发布了,除了一大堆令人激动的功能以外,也增加了对WPF的正式支持, 那么WPF在.NET Core 3.0下的开发体验如何呢? 本文利用了Stylet框架开发.NET Core 3.0上的WPF应用程序.关于Stylet框架, 可能大家比较陌生, 它是一个轻量级(但是非常优秀!)的WPF框架, 最近也更新了对.NET Core 3.0的支持, 关于Stylet的介绍可以浏览我之前的一篇博文: ViewModel从未如此清爽 - 轻量级WPF MVVM框架Stylet…
Windows Forms和WPF在Net Core 3.0框架下并不会支持跨平台 微软将WinForms和WPF带到.NET Core 3.0这一事实,相信大家都有所了解,这是否意味着它在Linux和Mac上运行?. 不!由于WinForms和WPF在后台使用Windows技术,因此无法在Linux或Mac上运行.它真的依赖于Windows.在.NET Core上运行它的意义在于性能,并且独立于任何框架. 相关知识点: 1.跨平台的WPF/UWP UI 框架:Avalonia 可以使用Aval…
在前面的一篇博客"WPF 自定义Metro Style窗体",展示了如何创建一个类似于Metro Style的Window,并在程序中使用.但是这个窗体不能够自由的改变大小.今天的博客中将展示如何创建一个可以通过拖拽来改变大小的Metro Style窗体. 实现思路,在Windows ControlTemplate中增加8个背景透明Rectangle,分别放置于Left, Right, Top, TopLeft, TopRight, Bottom, BottomLeft, Bottom…
先说结论:实现了在自定义大小的窗口中,加载图片,并在图片上绘制一个矩形框:且在窗口大小改变的情况,保持绘制的矩形框与图片的先对位置不变. 在WinForm中,我们可以很方便地绘制自己需要的内容,在WPF中似乎被限制了,不能够很方便的使用:然后需求有总是奇葩的,所以在这里简单地总结一下. 在WinForm中,如果需要自己绘制,就需要拿到Graphics对象:同样的,我们就希望在WPF也得到一个其同样作用的对象,这个对象就是DrawingContext类的实例对象. 具体来说,就是要重载 UIEle…
微软的WPF DataGrid中有很多的属性和样式,你可以调整,以寻找合适的(如果你是一名设计师).下面,找到我的小抄造型的网格.它不是100%全面,但它可以让你走得很远,有一些非常有用的技巧和陷阱. 在DataGrid中的最高水平,你可以改变的外观和感觉,通过设置一些: Property Type Values Default AlternatingRowBackground Brush Any Brush Null Background Brush Any Brush Theme defau…
注意: 本文方法基础是WindowChrome,而WindowChrome在.NET Framework 4.5之后才集成发布的.见:WindowChrome Class 在.NET Framework 4.0中使用WindowChrome,需要安装Ribbon来支持WindowChrome 目前官方文档的内容较为陈旧(但仍有参考价值),其中提到了SystemParameters2,这个应该是Ribbon里的东西,4.5想用可以安装Xceed.Wpf.AvalonDock库,这里面有现成的Mic…
在介绍这一篇文章之前,我们首先来回顾一下WPF中的一些基础的概念,首先当然是XAML了,XAML全称是Extensible Application Markup Language (可扩展应用程序标记语言),是专门用于WPF技术中的UI设计语言,通过使用XAML语言,我们能够快速设计软件界面,同时能够通过绑定这种机制能够很好地实现界面和实现逻辑之间的解耦,这个就是MVVM模式的核心了,那么今天我们介绍的MarkupExtension和XAML之间又有哪些的关系呢? Markup Extensio…
1.wpf自定义窗口: WindowChrome类描述:https://msdn.microsoft.com/zh-cn/library/system.windows.shell.windowchrome.aspx 示例样式效果: 1.设置GlassFrameThickness=0 隐藏默认标题栏 2.最大化最小化不会盖住任务栏 <Window x:Class="WindowChromeTest.MainWindow" xmlns="http://schemas.mic…
1. 什么是Validaion.ErrorTemplate 数据绑定模型允许您将与您Binding的对象相关联ValidationRules. 如果用户输入的值无效,你可能希望在应用程序 用户界面 (UI) 上提供一些有关错误的反馈. 提供此类反馈的一种方法是设置Validation.ErrorTemplate附加到自定义ControlTemplate的属性. 有关验证的详细讨论, 请参阅数据绑定概述中的 "数据验证" 一节. 如果没有设置Validation.ErrorTemplat…
一.自定义Main函数 在WPF中,我们添加一个Program静态类,添加一个Main静态方法,需要注意的是该方法需要添加"STAThread",表示WPF程序需运行在单一线程单元下.具体如下: static class Program { [STAThread] static void Main() { Console.WriteLine("自定义Main函数"); new MainWindow().ShowDialog(); } } 上述的Main并没有调用Ap…
WPF 自定义样式.CheckBox <Style x:Key="EmptyCheckBox" TargetType="CheckBox"> <Setter Property="Focusable" Value="False"/> <Setter Property="IsTabStop" Value="False" /> <Setter Prop…
由于项目需要制作一个可通用的报表多行标题,且可实现各种类型的内容显示,包括文本.输入框.下拉框.多选框等(自定的显示内容可自行扩展),并支持参数绑定转换,效果如下: 源码结构 ColumnItem类:对列的宽度,对象方式,显示类型,绑定名称,converter资源进行设置 /// <summary> /// 描述 <see cref="ColumnItem"/> 动态列项目,用于在后台构建多列标题绑定项 /// </summary> [Seriali…
效果图如下: 实现思路: 1.继承Window类 2.为自定义的CustomWindow类设计窗体样式(使用Blend很方便!) 3.为窗体增加最大最小化和关闭按钮,并实现鼠标拖拽改变窗体大小(使用Derek Bartram的WindowResizer.dll库) 代码说明: 1.继承Window类 创建CustomWindow类,继承自System.Window 代码 public class CustomWindow : Window {     public CustomWindow()…
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 简述: 手工以原生Grid的方式,自定义了一个仿弹窗效果,优点可以自定义,缺点需要自己实现以及维护整个弹窗的效果 效果图: 思路: 直接画好页面,控制它的展示消失即可 代码: 1.xaml的弹框,下面的按钮是自定义的样式 <!--确认xlsx的模态框自定义ConfirmedModalBox--> <Border x:Name=" Background="White" V…
首先介绍一种简单地方法:就是通过自定义SystemColors类的参数来自定义WPF ListBox选择颜色的, SystemColors的HighlightBrushKey和HighlightTextBrushKey分别代表ListBoxItem被选中时文字和背景颜色, 没有Highlight的BrushKey代表ListBox没有焦点时的选中项文字和背景颜色,如下示例代码: <ListBox> <ListBox.Resources> <Style TargetType=&…