WPF技术类
文章平均质量分 90
Andrewniu
这个作者很懒,什么都没留下…
展开
-
使用Visual Studio Installer 2015打包WPF程序
前言做过WPF项目,就少不了要将程序打包部署到客户现场,因为一般长时间不会更新打包程序,每次变动较大需要重新配置打包程序时,就会有些生疏,不那么得心应手。为了方便记忆,记录到博客中。准备因为做过的项目都是用VS2015编写的,所以选择网上使用较多的Visual Studio Installer2015工具。下载地址:Microsoft Visual Studio 2015 I...转载 2019-03-28 16:18:53 · 801 阅读 · 0 评论 -
简述WPF中的画刷(Brush)
--------------------------------------------------------------------------------引用或转载时请保留以下信息:大可山 [MSN:a3news(AT)hotmail.com]http://www.zpxp.com http://www.brawdraw.com萝卜鼠在线图形图像处理------------------...转载 2018-09-30 11:10:23 · 2764 阅读 · 0 评论 -
WPF教程(八)样式入门一
样式是我认为WPF中一块极为重要的知识,也体现该种框架比较厉害之处:(1)UI设计与动画方面的炫丽;(2)XMAL代码的引入使得代码的编写能够前后端分离,这种都是传统界面框架都不能比拟的,比如Winform、C++的MFC。我认为这是微软向当前We前端开发模式的学习,WPF是过渡的框架。当然,这些都是题外话。WPF的样式是非常强大的,除了与HTML标记中的CSS类似,它还能够支持触发器(Tri...转载 2018-09-27 14:33:17 · 494 阅读 · 0 评论 -
WPF 中双向绑定通知机制之ObservableCollection使用
msdn中 ObservableCollection<T> 类 表示一个动态数据集合,在添加项、移除项或刷新整个列表时,此集合将提供通知。在许多情况下,所使用的数据是对象的集合。 例如,数据绑定中的一个常见方案是使用 ItemsControl(如 ListBox、ListView 或 TreeView)来显示记录的集合。可以枚举实现 IEnumerable 接口的任...转载 2018-09-03 11:16:00 · 3980 阅读 · 0 评论 -
(转)Prism教程
https://blog.csdn.net/Henry_Wu001/article/details/12707875目录 一. Prism概述 二. Prism评估 三. Prism文档导读 四. 从Hello World开始 五. Prism中的术语和概念 六. Prism中的模式 七. Module 八. View 九. Event...转载 2018-08-31 11:46:10 · 6199 阅读 · 0 评论 -
WPF之PRISM中提供服务方式ServiceLocator
程序中看到return ServiceLocator.Current.GetInstance<TService>();ServiceLocator为系统接口,只提供GerService方法,个人觉的是为了提供统一的形式而已。 没有找到怎么在程序集之间提供这种服务的源码,网上也没有搜到怎么实现的。但是做框架时肯定不会预先知道服务的类型,只能以某种形式来识别特定的数据,...转载 2018-08-31 11:40:54 · 3073 阅读 · 0 评论 -
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
情景再现:上传文件到.net(wcf)后台时,总是上传不成功,后台要求Content-Type是application/octet-stream,我使用multipart/form-data方式,content-type是multipart/form-data,后来查了查这是两种不同的内容类型,在http的请求体中,数据组织方式不一样,所以,后台接收失败。 multipart/form...转载 2018-08-09 11:40:14 · 39244 阅读 · 0 评论 -
WPF多类库项目的依赖项设置问题
对于WPF项目,如果涉及多个类库,而类库之间又相互引用,为了避免并发冲突问题,需要设置项目的依赖项。原创 2018-06-08 16:26:49 · 1916 阅读 · 0 评论 -
WPF TextBox自动滚动到最后一行及DATAGRID数据绑定
textBox经常用来显示程序的运行状态或者消息,如何让他自动滚动呢?在显示消息代码下加一条自动滚动到底部的语句即可: TextBox1.ScrollToEnd();(如果要显示垂直滚动条设置VerticalScrollBarVisibility="Auto",如果不显示设置为Hidden)我用的程序代码如下: 1234567891011this.Dispatcher.Invoke(new Act...转载 2018-06-15 09:53:46 · 4500 阅读 · 3 评论 -
WPF——TextBox 滚动条与StackPanel
最近写的一个WPF小程序,边学边做的,在动态添加控件时出的这个问题,试了一下,直接写xaml也有这个问题,所以可以简单的说明一下.直接上xaml:[plain] view plain copy <Window x:Class="WpfApplication2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006...转载 2018-06-15 09:02:46 · 2379 阅读 · 0 评论 -
WPF:依赖属性和附加属性示例
[csharp] view plain copy public class Button : ButtonBase { // 依赖属性 public static readonly DependencyProperty IsDefaultProperty; static Button() { // 注册属性 Butto...转载 2018-05-28 08:11:20 · 898 阅读 · 0 评论 -
Entity Framework连接数据库、初始化的一些知识
俗话说:“工欲善其事必先利其器”,在深入讲解Entity Framework之前,先准备一下开发工具以及前期的配置。 一、开发工具开发工具基本略过,这里说一下,我使用的是Visual Studio 2012,Entity Framework版本为4.3.1,获取这个版本的办法:在Package Manager Console中输入Install-Package EntityFramework -V...转载 2018-05-28 08:11:08 · 3971 阅读 · 0 评论 -
app.config文件的配置及应用
学习如何在C#中配置及使用app.config文件1、向项目添加app.config文件:右击项目名称,选择“添加”→“添加新建项”,在出现的“添加新项”对话框中,选择“添加应用程序配置文件”;如果项目以前没有配置文件,则默认的文件名称为“app.config”,单击“确定”。出现在设计器视图中的app.config文件为:?12<?xmlversion="1.0"encoding="utf...转载 2018-05-28 08:11:02 · 784 阅读 · 0 评论 -
插件~NuGet与packages管理项目的包包
NuGetNuGet是一个工具,已经被集成到VS开发环境里,直接使用它可以快速安装第三方的包包,包包就是一组DLL和资源,开发者把它们打包一个包包,或者叫做package,而我们使用nuget可以将这个package(dll和资源)直接安装到指定的项目中,可以说是非常方便的,而且当包包有更新时,使用NUGET做升级也很容易!Package每个项目目录下都有自己的packages.config文件,...转载 2018-05-28 08:10:56 · 1163 阅读 · 0 评论 -
WPF中的MVVM模式
WPF中的MVVM模式 周银辉"设计模式"这样的话题似乎快被园子里的兄弟们写透了, 从简单的工厂到 MVC, MVP. 而关于MVVM似乎谈论得相对少些, 今天简单地说说. 值得声明的是: 这里仅仅谈论得是自己对别人发明的东西的一些理解, 可能有所偏误, 望理解. 另外, 搜索了一下,园子里 "cli...转载 2018-05-28 08:10:50 · 434 阅读 · 0 评论 -
Prism研究(for WPF & Silverlight)5.Module研究
终于要坐下来说一说Module的相关技术了。 本来不想讨论Module,因为一旦写好这些框框,以后就再也不会改变了。要知道,我们在Prism中更关心的是MVP模式的拆分。 Module相关技术包括两部分,一是如何加载Module,也就是在Shell的Bootstarpper中重写它的InitializeModules方法,从而把所有需要的Module加载到主程序中。二是如何创...转载 2018-05-30 08:46:07 · 347 阅读 · 0 评论 -
WPF 从集合中生成NavBarControl项目并自动分组
在本示例中,演示如何用GroupDescription属性将一个集合中的项目自动分组。要实现这个任务,必须将GroupDescription设置为一个可以被分组的属性名。另一种解决分组的方法就是将NavBarControl绑定到一个执行ICollectionView的source,并指定GroupDescriptions:[C#]CollectionViewEmployees.GroupDesc...转载 2018-05-30 08:46:01 · 981 阅读 · 0 评论 -
Prism V2之旅(1)
概述 如果你在开发wpf程序,应该听说过The Composite Application Guidance for WPF(以下简称prism) 总而言之,prism是帮助你开发复杂的wpf应用程序的。希望在看完此系列教程以后能对你有所帮助. 从去年正式版发布至今,将近快半年了.silverlight 2正版的推出.prism也开始支持silverlight,而且这...转载 2018-09-30 14:21:45 · 298 阅读 · 0 评论 -
Prism V2之旅(2)
本篇将介绍Prism中Region的使用. 本篇Demo下载在这里我们统一prism里面一些名字的称谓.1.Shell 主程序容器2.Region 内容区域3.Module 模块4.wpf 不是特殊情况,就是指wpf和silverlight一.wpf的内容控件 继承自ContentControl控件的,我们称之为内容控件.<ContentCon...转载 2018-09-30 14:23:36 · 422 阅读 · 0 评论 -
Prism V2之旅(3)-regionAdapter
上篇介绍了Region的基本应用,这篇接上篇,继续介绍关于Region的相关应用—RegionAdapter 示例代码下载1.预先实现映射关系RegionAdapterMappings RegionAdapterMappings对Control和RegionAdapter做了一个映射,这个映射是在Bootstrapper引导程序中完成的. protecte...转载 2018-09-30 14:24:36 · 1483 阅读 · 0 评论 -
C#批量发送短信操作
对于批量发送短信的操作,首先需要联系短信发送平台,并与之协商相关的费率问题,待协商确定后,短信发送平台会提供相关的程序开发接口,即SDK,及相关的账号密码等参数。后续按照SDK中介绍的方法或示例进行相关开发即可。目前使用阿里的短信开发平台,利用C#进行开发的相关代码如下,仅供参考。 if (!Regex.IsMatch(Phone,"^[0-9]{11}$")) {...原创 2018-10-31 15:36:21 · 1431 阅读 · 2 评论 -
C#程序中CMD命令的执行
在C#的各种编程中,往往涉及到部分CMD命令的操作,尤其是对于部分程序的启动与停止操作。因此,对于常用的CMD操作相关的类,需要熟悉,现总结如下:1,CMD操作时需要先启动CMD程序,即通过启动程序类Process来实现。2,可以通过设置启动程序类的StartInfo的相关属性来控制是否出现CMD界面,以及命令执行方式等。3,通过CMD执行命令,即是通过CMD程序的写入命令,将命令...原创 2018-10-31 14:44:16 · 2465 阅读 · 0 评论 -
WPF之PRISM框架下各个模块的加载过程
在PRISM框架下进行WPF的开发,在提供了一定的便利的同时,也会增加相当大的难度。因此,如果程序结构有一定的复杂度,才可以考虑使用PRISM框架。在使用PRISM框架时,尤其是在涉及多个模块的时候,各个模块的加载顺序,依赖关系,需要妥善处理,以避免程序运行异常。另外,如果需要将某个程序集直接生成到主程序下面的指定文件夹,注意在加载模块设置时的操作,因为加载的过多或过少都会影响程序的成功执...原创 2018-10-31 14:35:45 · 2427 阅读 · 2 评论 -
WPF中正则表达式的部分应用
无论在哪一种语言中,正则表达式在一定程度上都可以简化代码编程。以下为在WPF中的部分应用。如var sql = new System.Text.RegularExpressions.Regex("[\\r\\n]").Replace(str, " ");表示对str字符串中匹配换行符并以空格替代。 当然,也可以通过另外一种正则表达式进行此种功能的实现,如:var sql = n...原创 2018-10-31 14:29:46 · 895 阅读 · 0 评论 -
WPF多线程更改UI控件问题
无论是在WINFORM中,还是在WPF中,在涉及到复杂的逻辑关系时,如果在异步线程中需要更改界面控件,需要通过以下机制进行操作,从而达到异步更改界面控件的目的。即 Dispatcher.Invoke(new Action(() => {///需要更改界面控件的代码}));...原创 2018-10-31 14:23:50 · 661 阅读 · 0 评论 -
关于C#下面的Invoke 和在WPF中使用的Dispatcher.Invoke的区别
在此重新学习一下Dispatcher.Invoke的定义:从主 UI 线程派生的后台线程不能更新的内容 Button UI 线程上创建。 为了使后台线程访问的内容属性的 Button, ,后台线程必须将工作委托给 Dispatcher 与 UI 线程关联。 这通过使用实现 Invoke 或 BeginInvoke。 Invoke 是同步和BeginInvoke 是异步的。 ...转载 2018-10-31 11:31:52 · 5446 阅读 · 0 评论 -
MahApps.Metro之窗口标题工具栏
<Controls:MetroWindow.LeftWindowCommands> //窗口工具栏左边部分 <Controls:WindowCommands> //窗口布局 <Button Click="LaunchMahAppsOnGitHub" ToolTip="MahApps.Metro on GitHub">...转载 2018-10-23 14:13:42 · 2111 阅读 · 1 评论 -
wpf教程-metro扁平化样式UI控件库推荐:MahApps.Metro
wpf虽然做出来的ui效果已经很好了,但是还是会有很多客户要求在完善。不如在win8出来后,很多用户就喜欢metro的样式。今天给大家推荐metro扁平化样式UI控件库:MahApps.Metro 。官方地址:http://mahapps.com/guides/quick-start.html 效果图:支持控件: Buttons DataGrid ...转载 2018-10-23 14:12:48 · 6671 阅读 · 2 评论 -
WPF之PasswordBox用法
最近研究一下wpf ,wpf确实很强大、很炫, 简单做个注册功能,下面用到了 passwordBox 控件 前台代码 <Window x:Class="Main.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http:/...转载 2018-10-23 14:03:43 · 3978 阅读 · 0 评论 -
prism模块化问题总结(2)
继续讨论出现的问题 1.重新加载时,不要将view临时保存起来理由:这样将导致重新加载时,view的容器还存在,view无法加入。还会导致内存的问题.删除时也应该将其删除.如private List<object> viewList = new List<object>();private void AddRegionMenu(string reg...转载 2018-10-12 14:55:51 · 839 阅读 · 1 评论 -
prism模块化问题总结(1)
在prism模块化时,IRegion提供了添加View和Remove的方法.下面对一些会遇到的问题进行讨论。以下为Demo的Shell,一个Menu的Region,两个内容区域.<StackPanel><Menu cal:RegionManager.RegionName="TopRegion" ></Menu> <StackPanel ...转载 2018-10-12 14:55:57 · 795 阅读 · 0 评论 -
基于wpf的相关设计问题-Command的使用
这篇来讨论Command基于ViewModel的基本使用.以prism内置Command Demo为例子,效果图如下View相对应的ViewModel1.OrderEditorView的Model就是OrdersEditorPresentationModel了2.SaveAllOrdersCommand可以在数据通过验证后同时保存,即同时触发三个Command3.每个O...转载 2018-09-30 14:31:06 · 651 阅读 · 0 评论 -
基于wpf的相关设计问题-ViewModel
prism v2正式版本已经发布,有兴趣的可以去研究一下.框架给了我们一些实用的功能参考,并不代表实际开发就不会遇到问题。有些人以为只要套用了框架,开发效率就会提升很好,就好比有人以为只要我掌握了设计模式,开发效率会提升一样。框架只是为我们解决一部分常用的问题.但对于不同系统的设计总有些不同.本篇将讨论在wpf中主要使用了一些设计方法. 一.Model-View-Presenter...转载 2018-09-30 14:30:04 · 297 阅读 · 0 评论 -
prism v2之旅(7)
这篇继续介绍Module的功能.第5篇已经介绍过模块的一些基本功能了,这篇介绍模块在silverlight的特殊应用.silverlight的项目生成文件是xap文件,其提供了一个非常方便的功能,即相互的xap文件可以相互加载,就如flash的swf文件一样可以动态加载.建议你在看下去之前先看一下TerryLee写的这两篇文章这里我简单的总结一下silverlight程序初始化的步骤....转载 2018-09-30 14:28:33 · 263 阅读 · 0 评论 -
Prism V2之旅(6)
这篇来讲事件.事件主要用来交互.监听事件 我订阅了一些blog的rss,如果我订阅的blog发布了新的文章的话,系统(就是抓虾)就会帮我抓取新的rss信息很好理解,一方订阅(Subscribe),一方发布(Publish).prism的事件 prism的抽象类EventBase实现了事件的订阅和发布的操作.CompositePresentationEvent类继承自...转载 2018-09-30 14:27:25 · 330 阅读 · 0 评论 -
Prism V2之旅(5)
上篇介绍了WPF的Attach Behavior(附加行为)模式以及如何在prism框架中如何使用附加行为和RegionAdapter的扩展.这篇来介绍Prism中的很重要的一个功能模块化.请下载Demo基本概念模块化的概念类似于现在网上比较流行的Widget,如下例子google的个性化页面vista的sidebar 他们都有如下特性:1.模块之间...转载 2018-09-30 14:26:31 · 212 阅读 · 0 评论 -
Prism V2之旅(4)
上篇介绍了RegionAdapter的作用及如何如何扩展RegionAdapter的方法.这篇向大家介绍一个在wpf中非常实用的功能Attach Behavior.我们称之为附加行为.附加行为在Web领域的流行 如果你知道asp.net ajax框架就一定会知道AJAX Control Toolkit.虽然里面的很多功能华而不实,但这种实现方式确实非常值得学习.你可以再次...转载 2018-09-30 14:25:31 · 216 阅读 · 0 评论 -
WPF中DataTemplate基本原理与缺陷分析
这个文章来源于这样一个问题。下面的两种做 法,在效果上有什么不同?(注:Header是一个自定义DP。) <TabItem Header="{Binding Header, ElementName=window}"><TextBox Text="{Binding Header, ElementName=window}" Name="headerName"/></Tab...转载 2018-05-30 08:45:49 · 1616 阅读 · 0 评论 -
WPF 详解模板
在WPF中有三大模板ControlTemplate,ItemsPanelTemplate,DataTemplate.其中ControlTemplate和ItemsPanelTemplate是控件模板,DataTemplate是数据模板,他们都派生自FrameworkTemplate抽象类。1、ControlTemplateControlTemplate:控件模板主要有两个重要属性:VisualTr...转载 2018-05-30 08:45:43 · 690 阅读 · 0 评论 -
WPF Silverlight Visibility 属性的绑定
Silverlight 控件的Visibility属性不能直接用true或者false绑定,而是要通过一个Converter来实现: VisibilityConverter类代码:[c-sharp] view plain copy using System; using System.Windows; using System.Windows.Data; namespace DMS.Co...转载 2018-05-30 08:45:37 · 1547 阅读 · 0 评论