随笔分类 -  WPF/Silverlight

摘要:有的时候我们需要为我们的WPF文本框TextBox控件添加一个显示水印的效果来增强用户体验,比如登陆的时候提示输入用户名,输入密码等情形。如下图所示: 这个时候我们除了可以修改TextBox控件的控件模板之外,其实还有一种比较简单的方式来处理。就是为我们的TextBox控件添加一个触发器,当它... 阅读全文
posted @ 2015-06-06 23:14 rpoplar 阅读(7208) 评论(0) 推荐(3) 编辑
摘要:在WPF中我们经常需要抛去windows自带的窗口的样式,设定一些自定义样式的窗口,这个时候我们需要设定 WindowStyle="None" 来移除windows自带的界面样式。除此之外我们还需要设定 AllowsTransparency ="True"来让窗口支持透明的效果。 这里分享一个... 阅读全文
posted @ 2015-05-24 16:22 rpoplar 阅读(1363) 评论(1) 推荐(0) 编辑
摘要:在WPF/Silverlight开发中,我们都推荐使用MVVM模式进行开发,便于业务与UI的分离和单元测试。但在Silverlight中对TreeView的处理涉及到对TreeViewItem的相关操作如果用MVVM来实现的话,还是不是那么容易的。因为在微软提供的TreeView控件中并没有包含可以直接对TreeViewItem操作的Attach事件。而且在采用数据绑定的方式下每个TreeViewItem是在根据数据模板的层级关系来自动生成的,因此我们要获取每个TreeViewItem也不是那么容易的。 这里模拟一个需求场景:在MVVM模式下根据对TreeView节点的展开或者关闭来实现节点. 阅读全文
posted @ 2013-01-02 13:31 rpoplar 阅读(808) 评论(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 阅读(742) 评论(0) 推荐(0) 编辑
摘要:背景:WPF项目中,经常会处理一个或者多个耗时很久的任务,比如调用服务的数据查询然后把N条数据加载到列表控件。这种情况下如果采用一般的方式同步处理那么WPF的UI就会失去响应,卡死在那个地方,整个系统可能都无法操作,这对用户来说简直就是太不友好了,也得傻傻的等待任务完成才能干其他事件......这个问题的解决方法都是采用多线程来处理,一般是开起一个后台线程去完成这些任务,这样UI线程仍然可以响应用户的其它操作,等待后台把任务处理完毕了在通知UI、通知用户。这样不仅提高了效率、也让系统的体验更好。WPF的WPFToolKit、WPFToolKitExtended里面给我提供了一个BusyIndi 阅读全文
posted @ 2012-10-27 23:38 rpoplar 阅读(2242) 评论(3) 推荐(1) 编辑
摘要:在软件UI界面录入数据时候,为了保证数据的正确、有效、规范性,很多情况下都要验证数据的有效性。比如录入某个人的信息,那么我们就需要对这个人的姓名验证是否为空字符串,年龄是否为有效数字,性别是否为男或女等等。 在WPF开发中,数据的验证和数据绑定结合在一起,实现起来很优雅。我们可以让数据Model(模型)实现IDataErrorInfo接口来实现每个属性的验证逻辑。或者自定义一个继承自ValidationRule的类来实现验证逻辑。然后在Xaml中提供控件的ErrorTemplate模板,就可以得到很好的验证效果。下面提供一个样例代码: 后台数据 1 public class Pers... 阅读全文
posted @ 2012-09-16 12:11 rpoplar 阅读(1121) 评论(0) 推荐(1) 编辑