代码改变世界

随笔档案-2012年08月

一步一步分析Caliburn.Micro(三:绑定执行方法ActionMessage是怎么执行的)

2012-08-30 14:19 by 旦旦, 1810 阅读, 收藏,
摘要: 上次只是分析怎么把命令字符串保存到ActionMessage类,把参数绑定到Parameter属性上如果是Binding所产生的变量参数还好理解.其它的常量和带$变量的就不好理解了.那可是一连涉及到BindingScope, ConventionManager,View这几个类的. ActionMessage是继承 TriggerAction的这是触发器所执行的触发动作.写过自定触发器的人应该知道我们一般会重写OnAttached(生成UI控件时所附加代码), OnDetaching(关闭UI控件时对应的释放代码做到有借有还原理不让过度浪费资源), Invoke(触发器最终执行的代码)通过树形 阅读全文

IList与IList[T],自定义接口IActionList

2012-08-28 14:45 by 旦旦, 2467 阅读, 收藏,
摘要: 附件:ActionList.rarWPF DataGriw采用编辑模式,用户可以双击最尾的空白行从而新加一条记录.也可以选择行记录后按键盘Del键来删除选择的记录,做完一系列的操作后一次性把数据都保存到远程数据库中.那在MVVM中Ui和后台是分离的.不能直接知道那样那数据是新加\还是修改\有那些数据是被删除的了.那当前操作的集合表面保存的数据就不一定是这次一系列所有操作的数据.那只是操作过后所要保留下来的数据而以.为了触屏这样子的问题很多人一般都会写多几个按钮(如下图).把相应的操作都进行记录下来.这本来也不是什么不好的解决方法.但要是DataGrid这控件本来就是使用方便.管理数据还要这么多 阅读全文

WPF MVVM DataGrid数据直更新

2012-08-26 23:12 by 旦旦, 8040 阅读, 收藏,
摘要: WPF MVVM所有类基本上都会实现System.ComponentModel.INotifyPropertyChanged接口 .举例为TestModel实体类A3只是A1与A2的数据处理后显示,只要A1或A2有更新的情况前台UI都有变化实体如下. 但在DataGrid中有个很特别的问题,进入了编辑模式但在更新A1时退出当前单元的编辑模式,而不退出编辑行时A3的数据是不会有反应的变化.这样子有才生了一个问题,如果有好几个属性都是有关联的不可能为了知道属性处理真的变化,让客户换行后,发现数据不对了返回那个行进行编辑吧.这样也太友好了.那样实际下图的功能呢 .这样主是用到MVVM的Binding 阅读全文

一步一步分析Caliburn.Micro(二:绑定执行方法Message现学现卖之自定命令)

2012-08-17 10:12 by 旦旦, 2591 阅读, 收藏,
摘要: 还记得上章中说到的CM演示程序中出现的cal:Message.Attach="[Key Enter] = [EnterPressed]" 吗?在分析代码中可是见不到Key这个事件触发关键字的.看看CM是怎么允许让我们在适当的范围内修改吧.打开在官网上下载的原代码的samples目录下Caliburn.Micro.KeyBinding方案.打开解决方案发现项目很简洁没什么文件.KeyBindingBootstrapper.cs 对这个委托的重写会不会觉得让人觉得很特别呢.看上去很不习惯呢.让我们以一个正常的重写代码.演示下这段代码protected override Trig 阅读全文

一步一步分析Caliburn.Micro(一:绑定执行方法Message)

2012-08-15 11:34 by 旦旦, 5645 阅读, 收藏,
摘要: 分析扩展类Message.Attach前我们现以标准MVVM的形式看下,通过比较才会知道CM带来的方便.下面用的例子都为CM源码中找出来的代码段.cal:Message.Attach="DeactivateItem($dataContext, 'true')"cal:Message.Attach="[Key Enter] = [EnterPressed]"cal:Message.Attach="[Event MouseDoubleClick] = [Action ShowView]; [Event Click] = [Actio 阅读全文

一步一步分析Caliburn.Micro框架(序)

2012-08-14 10:26 by 旦旦, 4717 阅读, 收藏,
摘要: Caliburn.Micro(多数人叫CM)是一个开源的MVVM开发框架,主要应用范围是WPF\Silverlight\WinPhone以Xaml为UI的开发框架.与众多的MVVM框架相比较.个人觉得CM是我用得最习惯最快捷的一个框架.让人的感觉到不会像微软的prism很大很臃肿,又不像MvvmLight轻巧到只有几个文件只能做简单的MVVM功能.与我一起用过CM的同事都说这个框架用起来很方便.直接实例对象然后放到一个WindowsManager的类或.Conductor<IShell>.Collection.OneActive继承类上的特定方法就可以与UI自动绑定(虽然用的是命名 阅读全文

不用ADOX.CatalogClass创建Access数据库文件

2012-08-02 16:18 by 旦旦, 4305 阅读, 收藏,
摘要: 由于项目须要动态创建Access数据库,网上现在所有创建Access文件的方法都是采用ADOX.CatalogClass这个方法不是不好,但我只是为了创建一个文件而以,然后的表\视图都可以通过Sql语句来创建的.觉得根本没有必要引用COM组件,大家都知道COM组件是Window下才能使用的.如果项目以后移植到Linux\Mac系统上的Mono平台上时就这个功能就废掉了(虽然现在Mono连接Access比较麻烦主要是非Window平台没有Microsoft.Jet.OLEDB,从而要下载MDB Tools才能使用非Window平台访问Access,所以一搬现在很多人在非Window系统下都会采用 阅读全文