使用Prism重构项目中的问题汇总
2009-08-18 20:54
344 查看
1.把Page拆分成若干小的View到Module中,这时候,对于View中的图片,要设置为Do not copy和Resource,同时,要使用相对路径,就是说,原来是:
<Image Source="Images/Garage.jpg" ...
要改为:
<Image Source="../Images/Garage.jpg" ...(这里,假设Images是根目录下的一个文件夹。)
——没办法,儿子变孙子了。和UserControl有关,至于再嵌套一层Region和View,图片路径是否还要变,我不知道。于是,冒着项目重构被delay的危险,我偷偷做了一个实验,发现。。。
2.nnd,想起来我就要骂人。官大一级压死人,不分青红皂白,非要我把写好的PresentationModel模式通通改为ViewModel模式。老实说,我对工作量多少是不care的,只要保证技术正确;我只是对VM一直有成见。在转换的过程中发现,我所做的工作就是把PresentationModel模式的Presenter和Model合二为一,同时,由于只能在View中引用ViewModel,所以,只能使用View-first的技术。
更加不喜欢ViewModel模式,因为它把Logic和Entity混在一起。这就导致了一个问题,那就是Model重用——哪怕Model是一样的,因为Logic不一样,所以ViewModel做不到重用。没办法,只好一个View对应一个ViewModel。土了吧,Asset一把,ViewModel只能用于小型项目,而PresentationModel模式用于大型项目。
园子里也做这一行技术的朋友,看到后千万引以为戒,不要人云亦云,看到大多数公司都使用VM就跟风。请把握两种模式的不同使用场合。反正我这个项目是完蛋了,呵呵,我这里提前总结教训。
3.关于Silverlight尤其是Prism下的UT。
这是个很麻烦的事情,因为不能右击选择“Create UT”菜单,只能手动编写每个方法。于是工作量剧增,写一个UT方法的时间经常是写原方法所花费时间的好几倍。
详细技术请参见http://weblogs.asp.net/scottgu/archive/2008/04/02/unit-testing-with-silverlight.aspx,具体Demo请参加Prism自带的QuickStart和RI。
4.做一个RegionNames类,放置所有的Region名称,以加速开发速度:
public class RegionNames
{
public const string HeaderRegion = "HeaderRegion";
public const string ContentRegion = "ContentRegion";
public const string AssetRegion = "AssetRegion";
public const string WeatherNewsRegion = "WeatherNewsRegion";
public const string WeatherQueryRegion = "WeatherQueryRegion";
public const string FlightPanelRegion = "FlightPanelRegion";
public const string AlertRegion = "AlertRegion";
}
5.既然实现了INotifyPropertyChanged,在设置属性的时候,就要使用属性而不是字段(大写而不是小写),否则绑定不会被fired。 6.TextBlock上的单击事件已经解决。DataGrid中的TextBlock上的单击事件已经解决——这不是一句两句就能说清楚的,另起炉灶。 7.三种打开新窗口的方式:弹出新的带有SL的IE,弹出像MessageBox模式的对话框,在当前界面的某个区域,remove掉原有的,添加上新的。 8.MV-VM模式,由于没有Presenter,ViewModel不能反向操作View,于是在View中有一个ViewModel类型的Model属性外,还要在ViewModel中有一个IView的View属性,在初始化的时候绑定。 9.大部分event是可以屏蔽掉,要么绑定到ViewModel的属性,要么做成Command。但是,有一些事件还真不好处理,还是摆在那里吧,我隐隐的感觉到MVVM包括MVP模式的一些作茧自缚。 10.ActiveView和View的区别到底是什么?反正我现在是把之前的View都清了,然后再加新的View。貌似ActiveView的数量有时为0,而View的数量不为0。 11.有了Prism的Region,就不再需要Navigation了。
12.基于SOA架构的项目,各层应该有自己的实体,而不是说为了省事,DUI层直接使用Business层的实体。这是检查一个程序员是否合格的标准。
13.AgMenu真的不能实现Command吗?
14.既然可以View和ViewModel互相引用,那么就可以view-last。而不使用Loaded事件。
15.单独的XAML不同于pic,要设置为embeded Resource
16.花了半小时,调试var views = region.Views.ToList();为什么ToList方法找不到,原来没引用System.Linq;靠,脑袋有点昏。
<Image Source="Images/Garage.jpg" ...
要改为:
<Image Source="../Images/Garage.jpg" ...(这里,假设Images是根目录下的一个文件夹。)
——没办法,儿子变孙子了。和UserControl有关,至于再嵌套一层Region和View,图片路径是否还要变,我不知道。于是,冒着项目重构被delay的危险,我偷偷做了一个实验,发现。。。
2.nnd,想起来我就要骂人。官大一级压死人,不分青红皂白,非要我把写好的PresentationModel模式通通改为ViewModel模式。老实说,我对工作量多少是不care的,只要保证技术正确;我只是对VM一直有成见。在转换的过程中发现,我所做的工作就是把PresentationModel模式的Presenter和Model合二为一,同时,由于只能在View中引用ViewModel,所以,只能使用View-first的技术。
更加不喜欢ViewModel模式,因为它把Logic和Entity混在一起。这就导致了一个问题,那就是Model重用——哪怕Model是一样的,因为Logic不一样,所以ViewModel做不到重用。没办法,只好一个View对应一个ViewModel。土了吧,Asset一把,ViewModel只能用于小型项目,而PresentationModel模式用于大型项目。
园子里也做这一行技术的朋友,看到后千万引以为戒,不要人云亦云,看到大多数公司都使用VM就跟风。请把握两种模式的不同使用场合。反正我这个项目是完蛋了,呵呵,我这里提前总结教训。
3.关于Silverlight尤其是Prism下的UT。
这是个很麻烦的事情,因为不能右击选择“Create UT”菜单,只能手动编写每个方法。于是工作量剧增,写一个UT方法的时间经常是写原方法所花费时间的好几倍。
详细技术请参见http://weblogs.asp.net/scottgu/archive/2008/04/02/unit-testing-with-silverlight.aspx,具体Demo请参加Prism自带的QuickStart和RI。
4.做一个RegionNames类,放置所有的Region名称,以加速开发速度:
public class RegionNames
{
public const string HeaderRegion = "HeaderRegion";
public const string ContentRegion = "ContentRegion";
public const string AssetRegion = "AssetRegion";
public const string WeatherNewsRegion = "WeatherNewsRegion";
public const string WeatherQueryRegion = "WeatherQueryRegion";
public const string FlightPanelRegion = "FlightPanelRegion";
public const string AlertRegion = "AlertRegion";
}
5.既然实现了INotifyPropertyChanged,在设置属性的时候,就要使用属性而不是字段(大写而不是小写),否则绑定不会被fired。 6.TextBlock上的单击事件已经解决。DataGrid中的TextBlock上的单击事件已经解决——这不是一句两句就能说清楚的,另起炉灶。 7.三种打开新窗口的方式:弹出新的带有SL的IE,弹出像MessageBox模式的对话框,在当前界面的某个区域,remove掉原有的,添加上新的。 8.MV-VM模式,由于没有Presenter,ViewModel不能反向操作View,于是在View中有一个ViewModel类型的Model属性外,还要在ViewModel中有一个IView的View属性,在初始化的时候绑定。 9.大部分event是可以屏蔽掉,要么绑定到ViewModel的属性,要么做成Command。但是,有一些事件还真不好处理,还是摆在那里吧,我隐隐的感觉到MVVM包括MVP模式的一些作茧自缚。 10.ActiveView和View的区别到底是什么?反正我现在是把之前的View都清了,然后再加新的View。貌似ActiveView的数量有时为0,而View的数量不为0。 11.有了Prism的Region,就不再需要Navigation了。
12.基于SOA架构的项目,各层应该有自己的实体,而不是说为了省事,DUI层直接使用Business层的实体。这是检查一个程序员是否合格的标准。
13.AgMenu真的不能实现Command吗?
14.既然可以View和ViewModel互相引用,那么就可以view-last。而不使用Loaded事件。
15.单独的XAML不同于pic,要设置为embeded Resource
16.花了半小时,调试var views = region.Views.ToList();为什么ToList方法找不到,原来没引用System.Linq;靠,脑袋有点昏。
相关文章推荐
- 关于使用ABP框架搭建的项目升级时需要注意的问题汇总
- 使用JBoss 5.1.0.GA部署项目可能遇到的问题汇总
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
- asp.net c#.net项目中使用总结,遇到的各个问题的汇总
- maven项目使用svn相关问题汇总
- 在线聊天项目1.4版 使用Gson方法解析Json字符串以便重构request和response的各种请求和响应 解决聊天不畅问题 Gson包下载地址
- 关于项目既要使用ant脚本又要使用maven pom.xml文件的问题
- Ajax技术(5)--Ajax使用过程中常见问题汇总
- SVN工具使用问题及解答汇总
- 使用sublime编辑器编辑eclpse跑tomcat的项目不及时更新问题的解决方法
- 【Android Studio错误汇总】eclipse项目导入Android Studio .9.png图片不能识别报错的问题
- java 使用CRF遇到的问题汇总
- 使用Pycharm 社区版配合anaconda进行代码编写遇到的一些小问题汇总
- SSH集成项目,使用注解方式,竟然还有这样的问题!!
- 开源项目使用问题集锦
- java项目中使用 Lombok遇到的问题小结
- 项目问题之z-index的使用出现问题
- 项目中遇到的一些需要重构的问题以及解决方案1-应该尽量减少缩进层次
- wordpress使用问题汇总
- spring使用中问题汇总