摘要: 在WPF/Silverlight开发中,我们都推荐使用MVVM模式进行开发,便于业务与UI的分离和单元测试。但在Silverlight中对TreeView的处理涉及到对TreeViewItem的相关操作如果用MVVM来实现的话,还是不是那么容易的。因为在微软提供的TreeView控件中并没有包含可以直接对TreeViewItem操作的Attach事件。而且在采用数据绑定的方式下每个TreeViewItem是在根据数据模板的层级关系来自动生成的,因此我们要获取每个TreeViewItem也不是那么容易的。 这里模拟一个需求场景:在MVVM模式下根据对TreeView节点的展开或者关闭来实现节点. 阅读全文
posted @ 2013-01-02 13:31 rpoplar 阅读(800) 评论(0) 推荐(0) 编辑
摘要: silverlight开发中设置某个控件的焦点,如果是在code behind 情况下可以通过直接设定某个控件的focus()方法就可以实现。但是如果我们是用MVVM模式下通过绑定来实现呢?比如这样一个场景,一个登陆页面,需要设定登录名控件TboxLogin(TextBox)默认具有焦点。通过研究发现,TextBox并没有设置Focus的依赖属性,因此,直接绑定是不能实现的,我们只能通过其他方法来实现。 在Silverlight中有个System.Windows.Interactivity.dll的类库,专门用来处理Silverlight交互方面的功能,我们可以通过其中的Behavior来.. 阅读全文
posted @ 2012-12-29 00:24 rpoplar 阅读(736) 评论(0) 推荐(0) 编辑
摘要: gridpanel有时单元格内容太长显示不完全,可以弄个tip显示,具体实现如下:在每个列的render函数加上一个js函数来完成。......<ext:Column Tooltip="Description" Header="Description" DataIndex="Description"><Renderer Fn="showTip" /></ext:Column>...... function showTip(v, p) { //p 单元格, v单元格值; p.att 阅读全文
posted @ 2012-12-02 21:13 rpoplar 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 在Ext.netVersion 1.5(http://examples1.ext.net/)中,当需要展示具有层级关系而且具有多个属性的数据集合的时候,TreeGrid是一个不错的选择。但是这该版本中的TreeGrid并不像TreePanel一样提供了CheckBox在UI界面中,因此即使你在后台设置了TreeNode的Checked属性,仍然不会看到有CheckBox在树的节点中显示。但是我们需要这个功能,怎么办呢?查阅了很多资料,看到Ext.Net Forums上有一些人也遇到了相似的问题,但是在该版本中要实现该功能他们对TreeGrid进行了重构,修改了extjs中treegrid的j. 阅读全文
posted @ 2012-11-21 23:23 rpoplar 阅读(725) 评论(0) 推荐(0) 编辑
摘要: ext.net中经常在加载数据的时候需要显示一个mask来提示用户当前进行的处理,在GridPanel等控件中有LoadMask可以进行设置,但是在一些空间比如Combbox就没有提供,这个时候只能根据Loader来监听事件进行处理。可以通过BeforeLoad来显示Mask,Load之后来隐藏Mask。 如果要显示在这个页面上,可以通过Ext.getBody().mask("数据加载中...");Ext.getBody().unmask("数据加载中..."); 来显示和隐藏Mask。如果显示在控件上可以根据获取控件名称:比如空间名称为"Co 阅读全文
posted @ 2012-11-12 15:51 rpoplar 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 在使用XmlSerializer 序列化实体类的时候可能会遇到实体类中含有可空字段序列化的问题,如果我们直接对实体类进行序列化等到的Xml字符后我们查看会发现其中可空字段的xml标记的属性中会加入自动加入很多无用属性。 下面给出一个实例:一个实体类Student 包含一个可空的 int?Age 字段,以及一个XmlSerializer方法。Student 1 public class Student 2 { 3 public string ID 4 { 5 get; 6 set; 7 ... 阅读全文
posted @ 2012-11-07 23:17 rpoplar 阅读(1452) 评论(0) 推荐(0) 编辑
摘要: 系统中常会面临处理一些具有多属性列的而且具有层级关系的数据项,Ext.Net中 这种情况下一个比较好的选择就是使用TreeGrid来处理。TreeGrid其实是对TreePanel的继承和扩展,一次他的数据源是不支持Store来绑定的,而是通过TreeNode的集合,每个TreeNode通过添加CustomAttributes的ConfigItem来扩展显示的列属性。通过配置TreeGrid的TreeLoader来加载业务中的数据。下面给出一个简单的样例代码:前台HTML 1 <ext:TreeGrid ID="TG" runat="server" 阅读全文
posted @ 2012-11-06 22:46 rpoplar 阅读(1773) 评论(1) 推荐(0) 编辑
摘要: 背景:WPF项目中,经常会处理一个或者多个耗时很久的任务,比如调用服务的数据查询然后把N条数据加载到列表控件。这种情况下如果采用一般的方式同步处理那么WPF的UI就会失去响应,卡死在那个地方,整个系统可能都无法操作,这对用户来说简直就是太不友好了,也得傻傻的等待任务完成才能干其他事件......这个问题的解决方法都是采用多线程来处理,一般是开起一个后台线程去完成这些任务,这样UI线程仍然可以响应用户的其它操作,等待后台把任务处理完毕了在通知UI、通知用户。这样不仅提高了效率、也让系统的体验更好。WPF的WPFToolKit、WPFToolKitExtended里面给我提供了一个BusyIndi 阅读全文
posted @ 2012-10-27 23:38 rpoplar 阅读(2223) 评论(3) 推荐(1) 编辑
摘要: 在软件UI界面录入数据时候,为了保证数据的正确、有效、规范性,很多情况下都要验证数据的有效性。比如录入某个人的信息,那么我们就需要对这个人的姓名验证是否为空字符串,年龄是否为有效数字,性别是否为男或女等等。 在WPF开发中,数据的验证和数据绑定结合在一起,实现起来很优雅。我们可以让数据Model(模型)实现IDataErrorInfo接口来实现每个属性的验证逻辑。或者自定义一个继承自ValidationRule的类来实现验证逻辑。然后在Xaml中提供控件的ErrorTemplate模板,就可以得到很好的验证效果。下面提供一个样例代码: 后台数据 1 public class Pers... 阅读全文
posted @ 2012-09-16 12:11 rpoplar 阅读(1116) 评论(0) 推荐(1) 编辑
摘要: 静态和动态类型静态语言如C#,C++,Java都是在编译时执行类型检查,与此相反,动态语言如JavaScript,Perl和Ruby都是在运行时执行类型检查。C#最初被设计为基于强壮类型的语言,因为编译器可以确保类型匹配,在开发周期的早期阶段就会发现bug。现在情况发生了变化,在C#中引入了动态类型,你可以无缝地调用不同类型的对象了,如COM和JavaScript。Var和dynamic关键字为了支持动态变量声明,C# 4.0引入了关键字dynamic,在C#中var和dynamic关键字提供了本地类型含义,你不需要在赋值运算符左边指定数据类型,系统会动态绑定正确的类型。但与dynamic关键 阅读全文
posted @ 2012-09-16 00:02 rpoplar 阅读(290) 评论(0) 推荐(0) 编辑