Loading

摘要: 因为ApplicationBar并不支持数据绑定,所以做MVVM的时候是个麻烦。经过今天的研究终于搞定的了。 我们需要的是一个第三方dll: AppBarUtils 大牛Allen Lee的。下载地址:http://appbarutils.codeplex.com 不过目前所提供的功能来看只支持Text跟Command的绑定,于是我下载源码下来修改了一下,使之支持了IconUri绑定。这就不贴代码了,直接提供改过的dll。 使用: 添加xmlns: xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=Syste.. 阅读全文
posted @ 2012-03-05 17:18 Agile.Zhou 阅读(1139) 评论(6) 推荐(2) 编辑
摘要: 这几天使用MVVM重构这个应用,发现一个严重的问题,那就是导航。基于MVVM的思想,View跟ViewModel之间依靠绑定等技术通信,而且是View可以拿到ViewModel,ViewModel不可以拿到View。本来用CodeBehind的时候很容易的导航,到这里就无从下手了。当然也是有办法把View传递到ViewModel的,不过这样就破坏了MVVM的初衷了。 解决这个问题,首先需要解决怎么在ViewModel中得到NavgationServices来导航。以下是解决办法:root = Application.Current.RootVisual as PhoneApplicationF 阅读全文
posted @ 2012-03-01 02:09 Agile.Zhou 阅读(2804) 评论(6) 推荐(8) 编辑
摘要: 这次实现了MVVM Light事件的绑定。MVVM Light为事件绑定提供了很好的支持,它有很多种方式可以实现。对于支持Command的事件比如Button的Click事件那么最简单可以直接绑定Command。对于不支持Command的事件比如TextChanged可以使用InvokeCommandAction或者EventToCommand来绑定。这里我就不展开了,因为自己也是一知半解,以免误导看客。这次我演示使用EventToCommand来绑定HubTile的Tap事件。 在ViewModel里定义一个RelayCommand: namespaceDBFM7.ViewMode... 阅读全文
posted @ 2012-02-29 15:22 Agile.Zhou 阅读(1116) 评论(0) 推荐(2) 编辑
摘要: 最近面试多次被问及MVVM,虽然看过园子里的教程,毕竟未实际实现过,都回答“只了解,未实践过”。今天终于逼自己去用MVVM重构下这个应用。 这里就不多说MVVM的理论等东西了。需要了解的搜一下园子吧,大把大把的! 这次我选择了MVVM Light框架去实现MVVM。我也没用过其他的框架,也不知道有什么特别的地方或者优势,使用MVVM Light也全听别人说不错。 首先去codeplex下载下来MVVM Light:http://mvvmlight.codeplex.com/ 安装之。安装完成之后在原来的项目上添加引用: 调整项目目录结构: 新建View,ViewModel两个... 阅读全文
posted @ 2012-02-26 02:10 Agile.Zhou 阅读(1511) 评论(4) 推荐(3) 编辑
摘要: 在c#中,数据有2中基本类型:值类型和引用类型 值类型的变量存储数据,而引用类型的变量存储对实际数据的引用。 在参数传递时,值类型是以值的形式传递的,是将要传递的参数的值复制给函数的形参,因此在函数体类对于该形参的任何改变都不会影响原来的值; 引用类型是以对象引用的形式传递的,是将要传递的对象的引用复制给函数的形参,这时形参是实参引用的复制,注意:是引用的复制,而不是原引用,和原引... 阅读全文
posted @ 2012-02-21 17:00 Agile.Zhou 阅读(356) 评论(0) 推荐(1) 编辑
摘要: 以前搞silverlight的时候deepzoom挺酷的,这几天玩WPF的时候居然发现不支持deepzoom。这不是开玩笑么。google了几回,找到个开源的deepzoom for wpf 。这个控件配合Deep Zoom Composer确实可以实现。不过貌似只能用单张图片导出。 不过这样只能依靠Deep Zoom Composer,如果是动态的图片呢?不方便。于是反编译了下Deep... 阅读全文
posted @ 2012-02-16 16:30 Agile.Zhou 阅读(1098) 评论(0) 推荐(1) 编辑
摘要: 先说说接口: MSDN上是这样说的“接口描述的是可属于任何类或结构的一组相关功能。 接口使用 interface 关键字进行定义”。看到没有,关键是功能两字。接口只能描述了一种功能,所有实现接口的类都必然有这种功能。也正是功能两字,限定了接口中不能定义字段成员。接口只定义了功能的描述,就是说接口只定义了方法声明,没有具体实现。为了确保实现接口的类都有接口中描述的功能,所以子类必须去实现接口中定义的方法(可以是抽象方法或者是虚方法)。 public interface INterface{ /// <summary> /// 错误 不能定义字段 /// </summar... 阅读全文
posted @ 2012-02-12 01:58 Agile.Zhou 阅读(852) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2012-02-02 12:14 Agile.Zhou 阅读(99) 评论(3) 推荐(0) 编辑
摘要: public class UndoTextArea extends TextArea { private var _undoManager:UndoManager; public function UndoTextArea() { super(); _undoManager=new UndoManager(); this.addEventListener(KeyboardEvent.KEY_UP,und... 阅读全文
posted @ 2012-01-31 11:02 Agile.Zhou 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 前天接了个电话面试,被问到事件与委托的区别,虽然一直用但真要你说有什么区别一时半会还真说不上来。于是问google老师,得到如下答案: 1.事件的声明只是在委托前面加一个event关键词,虽然你可以定义一个public,但是有了event关键词后编译器始终会把这个委托声明为private,然后添加1组add,remove方法。add对应+=,remove对应-=。这样就导致事件只能用+... 阅读全文
posted @ 2012-01-17 00:39 Agile.Zhou 阅读(4667) 评论(2) 推荐(3) 编辑