代码改变世界

随笔分类 -  C#

使用 MVVMLight 消息通知

2014-07-16 16:01 by Andrew.Wangxu, 3292 阅读, 收藏, 编辑
摘要: 在文章的其实我们就说了,MVVMLight的精华就是消息通知机制,设计的非常不错。这个东西在MVVMLight可以说是用的及其的频繁,当 ViewModel请求View要有些改变的时候(比如弹个窗体)那么你在ViewModel里面编写弹窗的代码?那也就违背了MVVM的设计模式 啦,MVVMLight的消息通知可以实现互相调用代码而不耦合! 阅读全文

使用 MVVMLight 命令绑定

2014-07-14 10:53 by Andrew.Wangxu, 956 阅读, 收藏, 编辑
摘要: 首先,如果您希望了解更多的MVVMLight技术或希望有顺序的学习MVVMLight,请查阅目录《MVVMLight 设计模式系列使用文章》。 继上一篇文章的项目,我们实现了数据绑定到界面中。这篇文章我们将实现把命令绑定到按钮上,在XAML中的Button之类的都会有个Command属性可以让我们来绑定命令使用。 首先我们要实现的目标是,在界面中可以点击按钮添加数据,但是最多能添加5条数据,最少保证有1条数据。也就是两个按钮哈(增加数据/删除数据)。界面如下: 阅读全文

使用 MVVMLight 绑定数据

2014-07-14 10:52 by Andrew.Wangxu, 1340 阅读, 收藏, 编辑
摘要: 如果你还不知道如何在VS中加入MVVMLight的引用,那么建议你先翻阅这篇文章:在VS中安装/使用 MVVMLight 这篇文章主要是介绍如何使用MVVMLight来绑定数据到界面中(View),以此来了解MVVMLight的一些基础的类的用法。 文章底部会提供本示例的源码下载。 阅读全文

在VS中安装/使用 MVVMLight

2014-07-14 10:51 by Andrew.Wangxu, 1885 阅读, 收藏, 编辑
摘要: 一般来说,我喜欢使用NuGet来获取这些东西,比如Newtonsoft.Json、netlog4、MVVMLight 之类的东西。至于NuGet的使用,以后再说吧。为了直接进入正题,我们这里直接使用VS中的“扩展和更新”来安装MVVMLight组件。 我使用的是VS2013,其他版本的操作也基本上一样。接下来我们将安装MVVMLight到VS中。 安装 MVVMLight Toolkit 为什么说是 MVVMLight Toolkit ?实际上我们一般安装的都是 MVVMLight Toolkit ,这个里面包含了工具就是在VS新建工程的时候你会看见有MVVMLight的模板(而使用 NuGet 来直接引用MVVMLight 则没有这些模板之类的东西,比较干净。),其实两个都是同一个东西,只是一个有工程模板,另一个则是仅仅对MVVMLight相关文件的引用。 阅读全文

关于 MVVMLight 设计模式系列

2014-07-14 10:49 by Andrew.Wangxu, 883 阅读, 收藏, 编辑
摘要: MVVM设计模式你可以在WPF、Silverlight、Windows Phone开发中使用,我想至今已经有非常非常多的朋友正在使用MVVM设计模式,尤其是MVVMLight 。 本系列文章以WPF举例,似乎在百度上如果你要查找MVVM相关的某个知识点,难点,给我的感觉资料是比较少的。本篇文章是一个目录导航,我会在最 近一段时间把相关的MVVMLight的知识与技巧发布在我的博客中,并在本文中以目录的方式呈现。希望能为业界贡献一份微薄之力,帮助到正在看此文的 你。 有不足之处还望各位Coder们指导纠正,同时欢迎补充 or 投稿MVVMlight系列的文章。 阅读全文

Visual Studio使用技巧,创建自己的代码片段

2013-12-02 14:11 by Andrew.Wangxu, 2832 阅读, 收藏, 编辑
摘要: 1.代码片段的使用示例 在编写代码中常会使用代码片段来提高我们的编写代码的效率,如:在Visual Studio中编写一个 for(int i = 0; i length;i++) { } 阅读全文

List 和 ObservableCollection的区别

2013-12-02 13:54 by Andrew.Wangxu, 1306 阅读, 收藏, 编辑
摘要: 在WPF中绑定一个集合的时候,比如:DataGrid.ItemsSource = new List(); 这样的操作,会存在当数据行新增或者删除的时候不会得到及时的通知来刷新界面,而需要重新绑定DataGrid.ItemsSource = null; 再次重新绑定来实现。这样的工作效率比较低,另外使用起来也比较麻烦(在MVVM设计模式中)比较明显。 阅读全文

C# DataTable 转换为 实体类对象方法

2013-04-18 09:35 by Andrew.Wangxu, 1451 阅读, 收藏, 编辑
摘要: 如果你的实体类与数据库表是完全一致的。 假设:{Code} //对应数据库表: //User //字段:ID、Name 那么你也许需要编写将DataTable 转换为实体对象的方法,便利DataTable.Rows 获得并填充。。 下面是我写的一个通用方法,分享+记录,便于日后直接Copy ~ 阅读全文

C# 写了个获取本机外网IP发送邮件的服务- 分享。

2012-09-18 12:03 by Andrew.Wangxu, 1911 阅读, 收藏, 编辑
摘要: 介绍:获取当前计算机外网IP地址,若IP地址有更变则及时发送到指定的邮箱列表中进行通知。核心部分代码: private void GetIp() { string OriginalIp = string.Empty; while (true) { string myIp = string.Empty; myIp = WebHelper.GetWebContent("http://www.3322.org/dyndns/getip"); ... 阅读全文

在DOS使用SVN之执行命令整理(TortoiseProc.exe)

2012-08-21 10:48 by Andrew.Wangxu, 19169 阅读, 收藏, 编辑
摘要: 注:以下整理文本来源于官方的帮助文档,由于个人英语水准太那个啥。。。。大部分借助了谷歌翻译。 TortoiseSVN因为所有的命令都是通过命令行参数控制,你可以自动批处理脚本或从其它程序(例如你喜欢的文本编辑器)启动特定的命令和对话框。TortoiseSVN命令TortoiseSVN的GUI程序被称为TortoiseProc.exe。所有的命令都指定参数/command:ABCD,ABCD是必须的命令名。大多数这些命令需要至少一个路径作为参数,如/path:“一些路径”。由于一些命令需要一个目标路径的列表(例如提交一些特定的文件)/path参数可以接收多个路径,由一个*字符分隔。Tortoi. 阅读全文

C# 执行DOS命令方法记录

2012-08-20 23:23 by Andrew.Wangxu, 447 阅读, 收藏, 编辑
摘要: /// /// 执行DOS命令,返回DOS命令的输出 /// /// dos命令 /// 等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待 /// 返回DOS命令的输出 public static string ExecuteDOS(string dosCommand, int seconds) { string output = ""; //输出字符串 if (dosCommand != null && dosC... 阅读全文

C# System.IO.FileStream 读取被其他程序打开的文件提示“文件正由另一进程使用,因此该进程无法访问该文件。”

2012-08-15 11:00 by Andrew.Wangxu, 989 阅读, 收藏, 编辑
摘要: 文件正由另一进程使用,因此该进程无法访问该文件原来是构造System.IO.FileStream时,使用的方法有问题一开始是直接使用System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open)这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,因此需要使用System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Open,Syste 阅读全文

C# Dev控件中的 PropertyGridControl 属性控件的基本用法以及排序

2012-08-08 14:24 by Andrew.Wangxu, 8138 阅读, 收藏, 编辑
摘要: 在这个例子中将实现让该属性控件实现排序按钮。 效果如图: 首先2个按钮是 CheckButton 控件。 然后是一个:PropertyGridControl 控件 为了美观一点,将2个CheckButton控件的AllowFocus属性设置为 False 阅读全文

C# Dev控件中的 GridControl 双击行事件

2012-07-05 13:14 by Andrew.Wangxu, 1767 阅读, 收藏, 编辑
摘要: 在GridControl中的GridView的MouseDown事件中加入如下代码: DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo hInfo = gridView1.CalcHitInfo(new Point(e.X, e.Y)); if (e.Button == MouseButtons.Left && e.Clicks == 2) { //判断光标是否在行范围内 if (hInfo.InRow) ... 阅读全文

C# Dev控件中的 BarManager 添加下拉列表菜单

2012-07-05 13:12 by Andrew.Wangxu, 2707 阅读, 收藏, 编辑
摘要: 在BarManager中加入一个barSubItem,然后单击工具栏上 新增的 barSubItem 即可添加子项。 阅读全文

C# 使用反射来实现对象的深度复制

2012-07-02 16:40 by Andrew.Wangxu, 2716 阅读, 收藏, 编辑
摘要: 实现方式 通过挨个罗列的方式一次复制子对象是非常耗费人力的,如果子对象是引用类型,则还要需要考虑是否对子对象进一步深拷贝。 实际应用中,一个类如果有几十个子对象,挨个复制对于开发人员来说索然无味比较费时费力。 所以使用反射机制来实现。 阅读全文

C# 程序运行耗时测试类

2012-06-26 12:47 by Andrew.Wangxu, 565 阅读, 收藏, 编辑
摘要: 主要用于精确测试一段代码的运行耗时时间。这里以秒为单位(包括小数点)。。 阅读全文

C# 绘制椭圆形

2012-06-26 10:09 by Andrew.Wangxu, 1359 阅读, 收藏, 编辑
摘要: C#绘制椭圆形~DrawEllipse 阅读全文

C# 动态加载程序集

2012-06-25 16:55 by Andrew.Wangxu, 486 阅读, 收藏, 编辑
摘要: 今天在反序列化时发生错误:找不到程序集XXX 以前用过其他的方法解决这个问题,追加程序集的寻址文件夹地址。 现在分享另外一种方法叫做:当程序集加载失败时~ 事件注册如下: 阅读全文

C# 通过接口IEnumerator让自己编写的对象/类,实现foreach遍历方法

2012-06-20 13:26 by Andrew.Wangxu, 725 阅读, 收藏, 编辑
摘要: 简单说明: 要想自己写的类实现foreach方法,那么可以继承IEnumerator来实现。 除了实现继承接口中的方法,还要实现一个GetEnumerator()方法才行,返回值是你要遍历的对象。 如Item~ (我这里是返回Students) 直接上代码上图吧: 阅读全文