《深入浅出WPF》读书笔记

依赖属性:命令,实现IComamnd接口,或者直接是RoutedCommand类命令关联,负责将一些外围的逻辑与命令关联起来,比如执行命令后还进行哪些后续操作。-----------------------------------------------------------------------------------------------------WPF资源WPF不但支持程序级的传统资源,同时还推出独具特色的对象级资源,每个界面元素都可以携带自己的资源并可以被自己的子级元素共享。比如说模板,程序样式,主题就经常放在对象级资源中。 首先在XAML中添加名称空间引用:xmlns:sys="clr-namespace:System;assembly=mscorlib"示例:<Windowx:Class=""xmlns:sys="clr-namespace:System;assembly=mscorlib"><Window.Resources><sys:Stringx:Key="str">华中师范大学</sys:String>...
代码星球 代码星球·2020-04-14

WPF教程一:基础

一、WPF简介WPF:WPF即WindowsPresentationFoundation,翻译为中文“Windows呈现基础”,是微软推出的基于WindowsVista的用户界面框架,属于.NETFramework3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。二、WPF特点1、统一的编程模型WPF提供的编程模型统一普通控件、语音、视频、文档3D等技术,这些媒体类型能够统一协调工作,降低了我们的学习成本。2、与分辨率无关WPF是基于矢量绘图的,因此它产生的图形界面能够支持各种分辨率的显示设备,而不会像WinForm等在高分辨率的现实设备上产生锯齿。3、硬件加速技术WPF是基于Direct3D创建。在WPF应用程序中无论是2D还是3D的图形或者文字内容都会被转换为3D三角形、材质和其他Direct3D对象,并由硬件负责渲染,因此它能够更好的利用系统的图像处理单元GPU,从硬件加速中获得好处。4、声明式编程WPF引入一种新的XAML语言(ExtensibleApplicatio...
代码星球 代码星球·2020-04-14

AutoCAD 凸度(bulge)的概念及使用WPF函数画图

前言 凸度(bulge)是AutoCAD中一个非常重要的概念,凸度控制着两点之间弧度大小,弧度的方向。各种复杂的图像有可能就是成百上千的弧线组成的。从AutoCAD中导出的数据也有该值,一般的形式为两个点坐标、一个凸度值。所以理解凸度的概念是处理AutoCAD文件重要的前提。本文会简要介绍一下凸度的概念,同时会给出如何根据点坐标和凸度划线。凸度演示程序1凸度的概念凸度有两个作用控制顶点弧度的大小和弧度的方向。如果通过两个坐标点画弧,会有无数种可能性,所以必须引入第三个参数,来确定经过这两点的唯一弧线,这个参数就是凸度。凸度反应了两点之间对应弧度的大小,它的具体值为这段弧所包含角度的1/4角度的正切值。两点对应的弧度最大值为无限接近360度,凸度对应的值为接近90度的正切值,所以凸度最大值为无穷大。仔细观察上图,图B的弧度大于图A的弧度,但是图B的半径小于图A。为什么引入凸度值就能唯一确定弧线了?当凸度确定了,其实弧度对应的半径就确定了。考察一下图C,红线标识的部分为一个等腰三角形,等腰三角形底边长度和顶点角度确定了,就能唯一确定一个三角形大小(属于初中几何知识)。等腰三角形的...

WPF 入门《常用控件》

1.GroupBox注意:GroupBox仍然需要布局容器来放置元素。如:StackPanel面板<GroupBoxHeader="selectnumber?"><StackPanel><RadioButton>one</RadioButton><RadioButton>two</RadioButton><RadioButton>three</RadioButton></StackPanel></GroupBox> 2.TabControl   像这种标签页控件,在winform种非常常见,Tabpge子页面,而在WPF种,对应的则是TabItem类。 所示的代码示意图:<TabControl><TabItemHeader="首页"><StackPanel><Button>button1</Button><Button>button2</Button>&l...
代码星球 代码星球·2020-04-12

什么是WPF? 秒懂 !

  一開始听到WPF。认为非常陌生。在百度百科等地方看完简单介绍之后。感觉更深奥。各种不懂啊!在简单做了几个页面之后,发现。原来如此!SoEasy但又SoMagic。    为什么说它简单?由于它简直就是html的C/S模式嘛!   微软退出WPF,是为了让桌面应用更加美观。我觉得当中增加了非常多B/S模式的理念。尤其是样式的控制方面。当然,各种控件仍然是我们高速开发的利器。   为什么说它奇妙?由于它让你彻底告别了分辨率兼容问题。   还记得为适应各种分辨率屏幕而繁重工作吗?为了满足用户需求,我们不得不让我们的程序适应多个分辨率屏幕,即使如此,还得声明:我们的系统支持多少到多少分辨率的屏幕。   如今。有了WPF。你不用操心这个问题了。由于WPF使用的是矢量开发,WPF开发的程序能够自己主动依据屏幕的大小进行缩放。想想,这是多么的Magic。    WPF中引入了Gr...
代码星球 代码星球·2020-04-12

C# 生成word文档(NPOI.XWPF

1、创建WordusingNPOI.XWPF.UserModelXWPFDocumentdoc=newXWPFDocument();//创建新的word文档XWPFParagraphp1=doc.CreateParagraph();//向新文档中添加段落p1.SetAlignment(ParagraphAlignment.CENTER);//段落对其方式为居中XWPFRunr1=p1.CreateRun();//向该段落中添加文字r1.SetText("测试段落一");XWPFParagraphp2=doc.CreateParagraph();p2.SetAlignment(ParagraphAlignment.LEFT);XWPFRunr2=p2.CreateRun();r2.SetText("测试段落二");    r2.SetFontSize(16);//设置字体大小      r2.SetBlod(true);//设置粗体FileStreamsw=File.Create("cutput.docx");//...doc.Write(sw);//...sw.Close();//在服...
代码星球 代码星球·2020-04-12

WPF:自动执行"机器人"程序若干注意事项

企业应用中,经常会遇到一些需要定时自动执行的程序来完成某些功能,比如:自动定时从第三方webservice取回数据、定时对历史数据进行清理、定时向ftp上传业务数据...这类程序,我习惯称为“机器人”程序,就象机器一样机械、高效、重复的执行某些任务。通常部署上线后,都是放在服务器上一直开着,不允许轻易被关闭,而且最好要有一个界面,随时可以手动方便控制状态或查看运行情况,一旦发生异常情况,能及时通知管理员(Email或短信之类)如果是采用WPF技术开发,以下是几个需要注意的地方:1、无边框窗体(防止用户不小心点到右上角的关闭按钮)<Windowx:Class="WeatherSpider.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Window...>将主窗体的WindowStyle设置成None即可2、无边框窗体的移动去掉顶上的边框后,通...

WPF之插件开发

一:解决方案管理器截图效果图:二:简单功能说明IMsg定义了一个接口,MYPlugin1实现接口功能,”插件式开发“实现程序运行时再调用非本身引用的dll文件,调用该dll的方法实现功能三:IMsg、MYPlugin1(class1、class2和class3)和插件式开发的代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceIMsg{///<summary>///这是插件必须实现的接口,也是主程序与插件通信的唯一接口///换句话说,主程序只认识插件里的这些方法///</summary>publicinterfaceIMsgPlug{voidOnShowDlg();stringOnShowInfo();}}usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingIMsg;namespaceMYPlugin1{publicclassmyCon...
代码星球 代码星球·2020-04-06

MVVM模式中WPF数据的完全绑定

一:截图,描述:将后台代码的姓名、年龄绑定到文本框,单击”增加年龄“--年龄自+1,单击”显示年龄“--弹出年龄的显示对话框,实现了从文本框修改年龄和后台更改年龄并显示到文本框运行结果和解决方案管理截图如下:二:person类usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.ComponentModel;namespace完全数据绑定{classPerson:INotifyPropertyChanged//INotifyPropertyChanged是.net内置的接口,数据绑定会检测DataContext是否实现了INotifyPropertyChanged,如果实现了就会监听PropertyChanged这个属性改变的事件{privatestringname;//定义名字privateintage;//定义年龄publicstringName{get;set;}publicintAge//定义年龄属性{ge...

WPF的登录界面的排版

一:截图二:XAML代码<Windowx:Class="wpf练习.登录窗体"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="登录窗体"Height="200"Width="300"><Grid><Grid><Grid.ColumnDefinitions><ColumnDefinition></ColumnDefinition><ColumnDefinition></ColumnDefinition></Grid.ColumnDefinitions><Grid.RowDefinitions><RowDefinition></RowDefinition><RowDefinition></RowDefinition><...
代码星球 代码星球·2020-04-06

【转】编写高质量代码改善C#程序的157个建议——建议87:区分WPF和WinForm的线程模型

 建议87:区分WPF和WinForm的线程模型WPF和WinForm窗体应用程序都有一个要求,那就是UI元素(如Button、TextBox等)必须由创建它的那个线程进行更新。WinForm在这方面的限制并不是很严格,所以像下面这样的代码,在WinForm中大部分情况下还能运行(本建议后面会详细解释为什么会出现这种现象):privatevoidbuttonStartAsync_Click(objectsender,EventArgse){Taskt=newTask(()=>{while(true){label1.Text=DateTime.Now.ToString();Thread.Sleep(1000);}});//如果有异常,就启动一个新任务t.ContinueWith((task)=>{try{task.Wait();}catch(AggregateExceptionex){foreach(Exceptioninnerinex.InnerExceptions){MessageBox.Show(string.Format("异常类型:{0}{1}来自:{2}...

WPF:设置DataGrid中DataGridColumn列的普通样式和编辑样式

时间:2012-02-0120:28来源:博客园 作者:刘圆圆 点击:1570次0:DataGridColumn类型的继承树DataGridColumn的派生类:一般情况下DataGridBoundColumn和DataGridComboBoxColumn足以满足多数列的样式,如果需要自定义列样式,则可以使用DataGridTemplateColumn类型。在设置列编辑样式之前,我们先创建一个简单的DataGrid,分别显示名称(用默认的DataGridTextColumn),和分数(使用Dat    0:DataGridColumn类型的继承树  DataGridColumn的派生类:     一般情况下DataGridBoundColumn和DataGridComboBoxColumn足以满足多数列的样式,如果需要自定义列样式,则可以使用DataGridTemplateColumn类型。  在设置列编辑样式之前,我们先创建一个简单的DataGrid,分别显示名称(用默认的DataGridTextColumn),和分数(使用DataGridTemplat...

WPF学习】第六十章 创建控件模板

原文:【WPF学习】第六十章创建控件模板  经过数十天的忙碌,今天终于有时间写博客。  前面一章通过介绍有关模板工作方式相关的内容,同时介绍了FrameWorkElement下所有控件的模板。接下来将介绍如何构建一个简单的自定义按钮,并在该过程中学习有关控件模板的一些细节。  通过上一章内容,基本Button控件使用ButtonChrome类绘制其特殊的背景和边框。Button类使用ButtonChrome类而不使用WPF绘图图元的一个原因是,标准按钮的外观依赖于几个明显的特征(是否被禁用、是否具有焦点以及是否正在被单击)和其他一些更微妙的因素(如当前Windows主题)。只使用触发器实现这类逻辑是笨拙的。  然而,当构建自定义控件时,可以不用担心标准化和主题集成(实际上,WPF不像以前的用户界面技术那样强调用户界面标准化)。反而能更需要关注如何创建富有吸引力的新颖控件,并将他们混合到用户界面的其他部分。因此,可能不需要创建诸如ButtonChrome的类,而可使用以及学过的元素,设计自给自足的不使用代码的控件模板。一、简单按钮  为应用自定义控件模板,只需要设置控件的Template...

wpf/winform获取windows10系统颜色和主题色

原文:wpf/winform获取windows10系统颜色和主题色Windows10开始微软在系统颜色中添加了深色,对于UWP来说很轻松就能获取到系统当前的颜色和主题色,而对于Win32应用就没有那么直观了。在wpf中,可以通过SystemParameters.WindowGlassBrush获取一个近似的颜色,也没办法跟随着系统颜色的变化而变化,对于强迫症来说这是难以忍受的。其实系统颜色发生改变的时候,系统会给所有应用程序窗口发送颜色改变的消息,只要正确处理这个消息就能获取到系统当前的颜色和主题色了。WM_DWMCOLORIZATIONCOLORCHANGED=0x0320当然还可以使用一个更简单的方法。如果你在使用.NetFramework,应该可以直接使用;如果你在使用.NetCore版本的wpf和winform,需要使用nuget安装Microsoft.Win32.SystemEvents。之后监听SystemEvents.UserPreferenceChanged事件,当主题或颜色被改变时事件将会被触发。当然,还有很多情况这个事件会被触发,需要我们响应的时候判断一下颜色是不是...

wpf键盘

原文:wpf键盘一、键盘类和键盘事件WPF提供了基础的键盘类(System.Input.Keyboard类),该类提供与键盘相关的事件、方法和属性,这些事件、方法和属性提供有关键盘状态的信息。Keyboard的事件也通过UIElement等XAML基元素类的事件向外提供。对于键盘操作,其常用的事件有两组:KeyDown事件和PreviewKeyDown事件:处理键盘键按下KeyUp事件和PreviewKeyUp事件:处理键盘键抬起其中KeyDown和KeyUp事件属于冒泡路由事件,而PreviewKeyDown和PreviewKeyup属于隧道路由事件。为了使元素能够接收键盘输入,该元素必须可获得焦点。默认情况下,大多数UIElement派生对象都可获得焦点。如果不是这样,则要使元素可获得焦点,请将基元素上的Focusable属性设置为true。像StackPanel和Canvas这样的Panel类将Focusable的默认值设置为false。因此,对要获取键盘焦点的这些对象而言,必须将Focusable设置为true。例如:在笔者的Notebook中有“静音”、“增大音量”、“减小音...
代码星球 代码星球·2020-04-03
首页上一页...45678...下一页尾页