2010年2月 的存档
WPF Toolkit,2010年2月版本 发布,更新了3个控件,修复了一些bug。 1.AutoCompleteBox 自动完成控件,内容自动完成控件 2.Accordion 手风琴控件,扩展或收拉子控件 3.Rating 用户反馈控件 bug修复 1.DataGrid控件 模板,多行选择,排序等问题 2.Calendar/DatePicker控件 样式,默认值,其他问题等 3.VSM 生成转换问题 4.UI Automation 主要是UI自动修复和Calendar/DatePicker的问题 下载地址
近日Google发布了.NET版的YouTube SDK(MSI),以此满足那些希望从.NET或ASP.NET应用中以编程的方式访问YouTube的开发者的需要。 该SDK包含了一个YouTube API的CHM帮助文件,一个Visual Studio 2008模板和几个用于说明API用法的应用示例:可以将视频文件上传到YouTube上的工具、使用了AuthSub的ASP.NET迷你站点、由YouTube支持的授权服务以及当用户在YouTube上有新动作时会自动发出通知的应用。 YouTube API构建在Google的GData协议之上(MSI),并通过Google.GData.YouTube命名空间中特定的数据类对其进行了扩展。GData是个面向Web通讯的开源协议,为Google的众多服务所广为使用,如Blogger、Calendar、Picasa以及YouTube等等。 下面的代码示例取自SDK的帮助文档,展示了如何通过LINQ的链式where从句来访问YouTube:
上一篇,我们实现了同一窗体间的拖放,并且显示鼠标跟随效果,今天,我们来实现不同窗体之间的拖放,因为不是用一个窗体,而Adorner(装饰器)只能在父窗体内移动,所以,我们实现不同窗体之间显示鼠标跟随效果,就要再新建一个窗体来显示鼠标跟随的内容。我们先看一下完成后的效果图。 由于要获得鼠标相对屏幕坐标和把拖放窗体的位置带到放置窗体的位置,需要使用Win32 API来完成,我们先创建一个类,代码如下: 我们通过GetCursorPos()方法获得鼠标坐标,GetWindowLong()、SetWindowLong()方法获得和设置窗体属性。 接下来,我们编写拖拽窗体Window1.xaml.cs,代码如下 关键代码在StartDragWindow(MouseEventArgs)这个方法,开始拖拽时,我们先创建_dragdropWindow这个拖拽窗体,并进行相应初始化操作,定义被拖拽物体(这里为矩形)状态发生变化时调用UpdateWindowLocation()方法,更新拖拽窗体位置,拖拽完成后调用DestroyDragDropWindow()方法,销毁拖拽窗体,这一系列过程,达到完成窗体拖拽操作。 最后,我们编写放置窗体Window2.xaml.cs,代码如下 这里的代码很简单,WPF的拖放(一)已经有说明,有什么不明白就看文章一吧。 本文代码下载
上一篇,我们实现了基本拖拽操作,今天,我们来实现,拖拽过程中鼠标跟随效果,这里我们要用到WPF新对象Adorner(装饰器)用来显示拖拽内容,如我们今天拖拽的矩形。首先,我们新建一个DragAdorner类,继承Adorner用来显示拖拽内容,代码如下 我们声明几个对象,并且修改上篇代码中矩形的PreviewMouseMove事件 这样,就实现了,拖拽过程中显示跟随效果。关键代码就在StartDrag(MouseEventArgs)方法中,开始拖放的时候创建显示拖拽的对象,移动过程中更改装饰坐标,鼠标释放的时候移除装饰对象。看懂了之后,会发现WPF的拖拽并不复杂,但是,如何实现不同窗体之间的拖拽呢?后面我们会做介绍。 本文代码下载
拖放在C/S开发过程中总是一个难点,但是,为了得到更好的用户体验,很多地方还是需要使用到拖放的,今天,我们介绍一下WPF的拖放。 还是以往的惯例,用实例来说明WPF的拖放是如何实现的。 我们要实现的就是让左边的红色矩形移动到右边。首先,我们先编写xaml文件,代码如下 接着,我们来实现拖放中的拖,这个是最重要的部分,首先,我们注册矩形的PreviewMouseMove事件。代码如下: 需要说明的是这里的data就是我们拖放时的实际数据,我们使用DragDrop.DoDragDrop()方法启动拖放操作,将数据带入拖放操作中。 接下来,我们实现放置操作,将拖放的数据放置到相应的控件上。所以我们首先要设置放置对象的AllowDrop=”True”属性,让其具有可以放置的特性,接着实现放置控件的DragOver(拖动完成),Drop(放置)事件。代码如下: 我们在DragOver中判断拖动中的数据数据类型是否是我们放置的数据类型,如果不是则停止拖放。我们在Drop事件中将对象放置,即完成所有拖放操作。通过上面代码可以很好的完成一些简单拖放,后面我们会介绍,拖放时如何让对象跟随鼠标等效果。 代码下载
最近做的项目需要在客户端使用一个本地数据库来存放数据,想过使用Access,不过Access实在是太难用了,偶然间搜到了一个叫SQLite的开源数据库,基于本地环境就能运行,而且还是关系型数据库,可以使用标准的SQL语言,支持视图、事物等,实在是太好了。。。而且有很多语言(如我们的c#)对它提供了很好的支持。 今天,介绍一下这个数据库的使用。 首先,下载数据库安装包,很小只有3M多。 http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/ 下载完成后进行安装,没什么可说的一路回车就行。需要注意的是最后,需要选择数据库设计IDE,一定要勾上。 安装完成。。。现在,我们做个简单的项目。 我们先新建一个Winform项目,打开服务器资源管理器,如果没有可以从这里找到 下面,我们新建一个数据库名称为Sample.db,右键添加链接 在更改数据源对话框中选择SQLite Database File,单击确定 我们在添加连接窗口,选择New新建一个数据库文件Sample.db 单击确定,数据库建好了,我们现在来建表,还说在服务器资源管理器窗口中,Tables标签中右键选择添加新表 现在和SqlServer差不多的方式为表添加字段 好了现在,数据库和表都建立好了,我们现在来编写代码。 对于插入数据使用下面代码 对于查询数据使用下面代码 运行一下。。。看看效果 这个例子非常简单,SQLite在数据库开发过程中除了连接字符串之外,跟SQLServer几乎是一样的,而且这个数据库在性能上也是很不错的,跟Access比,性能还是功能都远远超过了Acces, 推荐大家使用。代码下载
关于WPF绑定机制,给我们带来了很大的方便,我们都了解在WPF绑定中使用XAML方式可以这样做,代码如下: 但是如果在cs文件中如何进行控件的绑定呢?看下面代码: 从上面代码可以看出,WPF用代码的方式也能很好的进行绑定操作。如果我们要执行双向绑定,或者设置Converter的时候怎么办呢?我们只要设置Binding的这两个属性Binding.Converter,Binding.Mode就可以了。
在WPF开发中,WPF给了我们很好的关于键盘的支持,不过,我在开发测试中发现,使用WPF内置的方式判断组合键会造成反应低下,如Ctrl+A组合键,如果用wpf自己的组合键判断方式,如: 如果,我们的客户在很快的情况下,按下组合键,会造成无效,为了解决这个问题使用Win32 API做个键盘钩子,在google中搜索,偶然发现,老外,给我们写了现成的关于Win32键盘监听的类。我们只要使用这个类就能判断用户的键盘事件。从而达到快速反应键盘事件的方式,次代码对WinForm同样有效。代码如下: 使用时,我们只要new KeyboardHook()对象,并且实现它的KeyDown事件就可以了。判断的时候要使用WinForm的类库。
WPF当窗体WindowStyle=”None”时,最大化会覆盖掉任务栏。如何解决这个问题呢?要用到Win32 API,通过让WPF窗体WM_GETMINMAXINFO消息挂接一个钩子来处理。 代码如下: 通过调用WindowHelper.RepairWindowBehavior(Window)方法注册Win32消息事件,以后调用this.WindowState = WindowState.Maximized;就可以解决最大化避免覆盖任务栏的问题了。