摘要: 在WPF中我们经常会使用ListBox或者ListView来绑定我们的数据集合,这些列表通常也都会有搜索和排序的功能。下面我们就来介绍一下WPF中应该如何对数据源进行排序和搜索。首先看一下我们要达到的功能,见图:界面中是一个人员列表,右上角显示了列表中的人员数量,顶上有一个搜索栏,当用户输入字符后能自动进行关键字搜索。如下图:当用户输入“王 1”,自动将姓名和电话中出现过(王)和(1)的记录搜索出来,并且右上角显示人员数量。通过点击列眉可以对列表进行排序控制,如图:实现过程:1. 按照通常的做法,我们先创建一个Model类(class Member),其中包含(Name和Phone)两个属性。 阅读全文
posted @ 2013-04-23 16:30 CanMusic 阅读(463) 评论(1) 推荐(1) 编辑
摘要: 依赖注入是面向对象开发中对象间解耦合的一种策略,它也可称为控制反转(Inversion of Control)或者依赖倒置原则(Dependence Inversion Principle)。这个概念说白了就是:我只做我关注的事情,其他不确定的事情你们其他人去实现吧。控制反转,反转的是什么,反转的是对程序的控制权。程序组件为调用者提供服务的同时,还需要能让调用者定制一些功能,只要符合组件的接口,调用者就可以将定制的功能设置给组件,这就相当于将控制权转交给了调用者,这样组件不会依赖于一些可变的功能,对于调用者来说使用组件也可以更加灵活更加可扩展。正如依赖倒置原则说的要依赖于抽象,不要依赖于具体, 阅读全文
posted @ 2013-04-16 15:22 CanMusic 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 使用Vim作为Node.js的IDE环境也是个不错的选择。Vim: http://www.vim.org/download.phpNode.js在Github上也有一篇关于Vim插件的推荐文章。https://github.com/joyent/node/wiki/Vim-Plugins下面就整理一下配置Vim的一些步骤。1. Pathogen这是Vim中用来方便管理插件的插件,有了它,之后介绍的很多插件安装就会显得简单。在~\vimfiles下新建两个文件夹,~\vimfiles\autoload和~\vimfiles\bundle复制pathogen.vim到~\vimfiles\auto 阅读全文
posted @ 2013-04-08 00:47 CanMusic 阅读(8170) 评论(4) 推荐(1) 编辑
摘要: 一. 安装和部署Node.js开发环境1. 安装node.js,请访问http://nodejs.org/2. IDE开发环境开发方法有多种:notepad, eclipse, google chrome, WebMatrix, ...,各有各的优缺点,个人比较喜欢eclipse方式。eclipse配置步骤可以参考如下网址:http://download.eclipse.org/eclipse/downloads/https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debuggerhttp://www.n 阅读全文
posted @ 2013-03-29 18:02 CanMusic 阅读(3220) 评论(3) 推荐(0) 编辑
摘要: 当我们在界面线程中进行I/O操作的时候,经常会导致界面锁死。为了解决这个问题,就需要将I/O操作异步执行。在.Net 4.5中针对异步编程有了新的做法,它新推出了两个关键字 async 和 await。下面我们就以读取网络数据为例,一步一步来看看它能带给我们的优势。1. 一般的同步实现方式public string DownloadSync() { StringBuilder sb = new StringBuilder(); using (WebClient client = new WebClient()) { for (int i = 1... 阅读全文
posted @ 2013-03-22 18:39 CanMusic 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 一. WebSocket Server首先选择安装nonocast实现的Nonocast.Http,详情可参见:http://nohttp.codeplex.com可以通过VS自身的PackageManager下载,在Tools->Library Package Manager->Package Manager Console中输入“Install-Package Nonocast.Http”即可。1. 创建Service类public class RemoteService : SmallHTTPServiceBase { public ActionResult Default( 阅读全文
posted @ 2013-03-18 11:20 CanMusic 阅读(1247) 评论(0) 推荐(0) 编辑
摘要: 我们知道在.Net中要实现普通的文件复制功能很简单。File.Copy(src, dest)就可以完成。如果需要显示复制文件的进度,如下图:如果需要处理文件重名问题,如下图:难道我们还需要自己编程一套逻辑和界面来完成以上功能吗?这些问题Windows系统自身已经帮我们解决了,我们可以直接使用系统的文件复制功能来完成。主要通过windows API:SHFileOperation 来实现通过PInvoke转C#代码如下:public class Win32 { public enum FileFuncFlags : uint { FO_MOVE = 0x1, F... 阅读全文
posted @ 2013-03-08 17:17 CanMusic 阅读(1982) 评论(4) 推荐(2) 编辑
摘要: 复制C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE目录下的mspdb110.dll, mspdbcore.dll, mspdbsrv.exe 到C:\Program Files\Microsoft Visual Studio 11.0\VC\bin目录下 阅读全文
posted @ 2012-10-17 13:32 CanMusic 阅读(519) 评论(0) 推荐(0) 编辑
摘要: 1. 安装Git (参考:Git安装与配置) 2. 在客户端和服务器安装ssh apt-get intstall ssh 3. 在服务器上建立gitolite专用账户git adduser --system --shell /bin/bash --group git adduser git ssh // 将git用户添加到ssh用户组 passwd ... 阅读全文
posted @ 2012-10-14 20:17 CanMusic 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 1. 在Windows下使用ssh+msysgit客户端搭建Git服务器http://www.codeproject.com/Articles/296398/Step-by-Step-Setup-Git-Server-on-Windows-with-CopS2. 在Windows下使用Apache+msysgit客户端搭建Git服务器http://www.devbean.info/2011/10/apache-git-server-on-windows/3. 在Linux下使用Gitolite搭建Git服务器http://www.ossxp.com/doc/git/gitolite.html相 阅读全文
posted @ 2012-10-11 00:51 CanMusic 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 一. 首先通过Cygwin的安装包安装以下软件包:1. git2. git-completion3. vim二. 配置Git1. 由于在windows平台下,所以可以禁止Git对文件权限的跟踪git config --system core.fileMode false2. 解决Git命令输出中文文件名的显示问题git config --system core.quotepath false3. Git命令输出中开启颜色显示git config --system color.ui true4. 配置UserName和EMailgit config --global user.name &quo 阅读全文
posted @ 2012-10-10 01:20 CanMusic 阅读(872) 评论(0) 推荐(0) 编辑
摘要: apt-get:在Linux下用于从互联网进行deb软件包的安装、升级、卸载等操作,一般需要root权限执行。源服务器配置:vi /etc/apt/sources.list常用的源列表:deb http://www.anheng.com.cn/debian/ squeeze maindeb-src http://www.anheng.com.cn/debian/ squeeze maindeb http://ftp.hk.debian.org/debian/ squeeze maindeb-src http://ftp.hk.debian.org/debian/ squeeze maindeb 阅读全文
posted @ 2012-10-10 00:43 CanMusic 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 涉及WPF相关知识点DependencyProperty、Command、MarkupExtension、DataBind、Style、Template、 Resource、Trigger详细细节参考相关技术文章Example 介绍功能文本框中输入字符模糊查找树中的节点,如果匹配则自动展开树并高亮匹配节点。文件结构说明Model文件夹下是持久化数据对象(PO),例子中使用MockDatabase来模拟数据库持久化。ViewModel文件夹下是现实数据对象(VO),用来和WPF控件进行数据绑定。关键点说明TreeViewbase.DataContext = GroupTreeViewModel. 阅读全文
posted @ 2012-10-09 23:08 CanMusic 阅读(929) 评论(2) 推荐(0) 编辑
摘要: 最佳实践 2009年10月10日 11:00 播放2小时 => 一次性触发 从2009年10月10日起 每天 11:00 播放2小时 => 每天触发 从2009年10月10日起 每周三 11:00 播放2小时 => 每周触发 从2009年10月10日起 每年十月和五月的一号 11:00 播放2小时 => 每月触发 功能 这是一个对于排期应用的封装类库,使用Quartz进行排... 阅读全文
posted @ 2012-10-09 23:01 CanMusic 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 参考网址http://nant.sourceforge.nethttp://nsis.sourceforge.net运行环境配置解压缩附件NAnt和NSIS到一个固定目录(不能带空格的目录),例如:D:\Programs配置 MSBUILD将C:\WINDOWS\Microsoft.NET\Framework\v3.5加入环境变量验证方式:命令行运行msbuild, 看到版本信息则为成功。配置NAnt将D:\Programs\NAnt\bin加入环境变量验证方式:命令行运行nant, 看到版本信息则为成功。配置NSIS将D:\Programs\NSIS加入环境变量验证方式:命令行运行maken 阅读全文
posted @ 2012-10-09 22:58 CanMusic 阅读(564) 评论(1) 推荐(1) 编辑
摘要: 简介 IP网络传输方式共分为单播,组播(多播),广播三种。平时我们最常用的一对一的网络传输方式就是属于单播;而组播是一对多的传输方式,其中有个组播组的概念,发送端将数据向一个组内发送,网络中的路由器通过底层的IGMP协议自动将数据发送到所有监听这个组的终端。至于广播则和组播有一些相似,区别是路由器向子网内的每一个终端都投递一份数据包,不论这些终端是否乐于接收该数据包。 相对于极度消耗网络带宽的广播来说(广播只能在内网广播),UDP组播有了很大的优化,只有终端加入到了一个广播组,UDP组播的数据才能被他接收到。UDP组播是采用的无连接,数据报的连接方式,所以是不可靠的。也就是数据能不能到达接受端 阅读全文
posted @ 2012-10-09 22:35 CanMusic 阅读(1099) 评论(0) 推荐(0) 编辑
摘要: 一、 介绍延续上一篇针对Awesomium的试用感受,感觉还是挺不错的,觉得网页抓图功能效果很好,今后具有一定重用性,因此特地进行了封装,让它支持多线程并发截图。 以Helper的形式进行了封装,封装类是WebSnapshot,由于内部的WebCore对象是一个重对象,因此将其做成了单件形式。下面是封装暴露的接口:delegate void FinishSnapshot(Bitmap bmp)void BeginSave(string url, string savePath, FinishSnapshot finishCallback)Bitmap Save(string url, stri 阅读全文
posted @ 2012-10-09 22:32 CanMusic 阅读(1493) 评论(1) 推荐(1) 编辑
摘要: 原来WebSnapshot可以这么简单 http://www.khrona.com/products/awesomium/ http://awesomiumdotnet.codeplex.com/ http://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/ http://khrona.com/wiki... 阅读全文
posted @ 2012-10-09 22:28 CanMusic 阅读(3892) 评论(0) 推荐(1) 编辑
摘要: 网络虚拟磁盘 就是将局域网中的共享文件夹映射为本地电脑的一个盘符,可以方便访问局域网中的共享文件。 操作方式就是在我的电脑工具栏中选择“映射网络驱动器”来完成。 本地虚拟磁盘 就是将本地硬盘中的一个文件夹映射成为本地电脑的一个盘符,有点类似于快捷方式的效果,但是区别是它被认为是一个盘符而不是一个快捷方式的文件。... 阅读全文
posted @ 2012-10-09 22:25 CanMusic 阅读(756) 评论(0) 推荐(0) 编辑
摘要: IE菜单栏默认为隐藏状态,按下键盘Alt键后显示,菜单失去焦点则自动隐藏。下面说说WPF中如何实现这样的效果。 第一步:Menu默认设置为隐藏(Visibility="Collapsed"),这里不应该设置为"Hidden",因为菜单栏隐藏后其他控件需要自动填补菜单栏隐藏后的空缺。Visibility="Hidden"只是界面上不显示而已,Menu控件的位置还是被占用着。 第二步:响应键盘Al... 阅读全文
posted @ 2012-10-09 22:21 CanMusic 阅读(1222) 评论(0) 推荐(0) 编辑
摘要: Windows API //获取某一类型的设备列表[DllImport("setupapi.dll", CharSet = CharSet.Auto)]public static extern IntPtr SetupDiGetClassDevs(ref Guid ClassGuid, [MarshalAs(UnmanagedType.LPTStr)] string Enumer... 阅读全文
posted @ 2012-10-09 22:17 CanMusic 阅读(1031) 评论(1) 推荐(0) 编辑
摘要: 1. 视频文件截图 ffmpeg.exe -i "c:\test.mp4" -f image2 -ss 8 -vframes 1 -y "c:\test.bmp" -i 表示输入文件 -f 表示输出文件格式 -ss 表示截取第几秒的画面 -vframes 表示截图的帧数 -y 表示覆盖保存输出文件 最后一个参数是ffmpeg的输出文件 2. 获取视频文件播放时间以及分辨率等信息 ... 阅读全文
posted @ 2012-10-09 22:09 CanMusic 阅读(775) 评论(0) 推荐(0) 编辑